需要帮助从Excel文件中提取数据

我有一个excel文件,列出了一个类别和他们的产品,每个产品有一个关联的价格。 而且它的组织很差,就像这样:

汽车

斯巴鲁| $ 5200

丰田| $ 4300

雷克萨斯| $ 8600

福特| $ 7580

卡车

奔驰| $(12200)

铃木| $ 8400

我基本上需要从这张表中提取数据并将其存储到mysql数据库中。 以粗体显示的所有内容都是一个类别,在下一个类别遇到之前,产品会列在一个类别下。

所以在类别表应该最终看起来像这样

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

而产品表是这样的

 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 

我可以用什么工具/语言来做这件事并不重要。 这是一次性提取。 任何关于如何开始这个工作的指针都会有帮助。

对于一次性提取,使用vba将数据拆分为两个单独的临时表格,然后使用标准方法将数据插入到数据库中。

下面的代码假定数据位于名为“Data”的表单中,并从单元格A1开始
添加两张名为“Catagory”和“Product”

代码循环遍历数据表,将每一行复制到正确的表格中

 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 

如果可用,我将使用SQL Server Integration Services。 它可以处理来源中的loggingtypes。

编辑:根据下面评论中描述的新要求。

使用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;