2011-06-17 9 views
0

カテゴリとその製品のリストを含むファイルがあり、それぞれの製品に関連価格があります。 |Excelファイルからデータを抽出するのに役立つ必要があります

スバル:そして、それは非常に悪い組織されます、それはこのようなものです$ 5200

トヨタ| $ 4300

レクサス| $ 8600

Ford | $ 7580

トラック

メルセデス| $ 12200

鈴木| $ 8400

私は基本的にこのシートからデータを抽出し、それをmysqlデータベースに格納する必要があります。 太字のすべてはカテゴリです。商品は次のカテゴリになるまでカテゴリの下に表示されます。それはどのようなツール/言語、私はこれを行うために使用することができていません

だからカテゴリに表には、この

id title  category_id price 
--------------------------------- 
1 Subaru 1   5200 
2 Toyota 1   4300 
2 Lexus  1   8600 
2 Ford  1   7580 
2 Mercedes 2   12200 
2 Suzuki 2   8400 

のようなこの

id title 
----------- 
1 Cars 
2 Trucks 

や製品の表のように見える終わる必要があります。これは1回限りの抽出です。どのように私はこれで作業を開始することができます上の任意のポインターは、十分に役立つだろう。

答えて

2

1回の抽出では、vbaを使用してExcelを使用して標準の方法で2つの別々の一時的なシートに分割し、データベースにデータを挿入します。

以下のコードは、データが「データ」という名前のシートであると仮定し、セルA1から始まり
に各行をコピー、

コードは、データシートをループ「Catagory」および「製品」と呼ばれる2枚のシートを追加正しいテーブルシート

Sub SplitData() 
    Dim rData As Range 
    Dim rCat As Range 
    Dim rProd As Range 
    Dim Cat As String 
    Dim Prod As String 
    Dim Price As Currency 
    Dim Cat_ID As Long 
    Dim Prod_ID As Long 

    Set rData = ActiveWorkbook.Worksheets("Data").Cells(1, 1) 
    Set rCat = ActiveWorkbook.Worksheets("Catagory").Cells(1, 1) 
    Set rProd = ActiveWorkbook.Worksheets("Product").Cells(1, 1) 

    rCat = "id" 
    rCat.Offset(0, 1) = "title" 
    Set rCat = rCat.Offset(1, 0) 

    rProd = "id" 
    rProd.Offset(0, 1) = "title" 
    rProd.Offset(0, 2) = "catagory_id" 
    rProd.Offset(0, 3) = "price" 
    Set rProd = rProd.Offset(1, 0) 

    Cat_ID = 0 
    Prod_ID = 0 

    Do While rData <> "" 
     If rData.Font.Bold Then 
      Cat = rData 
      Cat_ID = Cat_ID + 1 

      rCat = Cat_ID 
      rCat.Offset(0, 1) = Cat 

      Set rCat = rCat.Offset(1, 0) 
     Else 
      Prod = rData 
      Price = rData.Offset(0, 1) 
      Prod_ID = Prod_ID + 1 

      rProd = Prod_ID 
      rProd.Offset(0, 1) = Prod 
      rProd.Offset(0, 2) = Cat_ID 
      rProd.Offset(0, 3) = Price 

      Set rProd = rProd.Offset(1, 0) 
     End If 
     Set rData = rData.Offset(1, 0) 
    Loop 


End Sub 
0

EDITED:以下のコメントに記載されている新しい要件に基づいています。

Excel内でVBAを使用すると、次の操作が実行されます。私はpsudeoコードを使用して説明します:

string saveCategory; 
readrow columnA, ColumnB; 
if (columnA is bold) 
{ 
    saveCategory = columnA; 
    write saveCategory to category table; 
} 
else 
{ 
    write to product table productname=ColumnA, productprice=columnB, category=saveCategory; 
} 
loop back to read next row until end of worksheet; 
+0

しかし、カテゴリが太字としてマークされていることを覚えて、書式設定が失われますcsvファイルとして保存 – HyderA

+0

あなたは太字あなたのテーブルにデータを保持しようとしていますか?ハァッ? CSVファイルは一時的なものなので、テーブルを作成することができます。あなたがVBAをどのように使用してExcel内で行うことができるか分かっていても、簡単な答えがほしいと思っていました。 –

+0

いいえ、私はテーブルに太字として保存しません。私が提供しているシートは、カテゴリを太字で定義しています。行が太字の場合はカテゴリです。 – HyderA

0

可能であれば、SQL Server Integration Servicesを使用します。ソース内のレコードタイプを処理できます。

+0

セルが太字であることを検出し、次のnレコードのカテゴリに記入しますか? – Fionnuala

関連する問題