快速从Excel xlsx文件中提取简单string的方法

在哪里工作我有几百个xlsx文件(使用Office 2010 Starter创build),我需要从中提取信息。 这只是一个工作,所以问题是最快的。 现有的工具? 编程解决scheme?

信息只是string,格式不重要。 这些文件包含客户数据。 每个客户一个文件。 在你问之前,是的,这是一个愚蠢的系统 – 我们正在放弃它。 因为我们现在正在转向一个新的系统,所以我们需要将现有的客户数据导出到可以在新系统中导入的CSV文件中。

如果我要编写一个计算机程序来做到这一点,我将需要能够访问每个文件中的第一个工作表,并能够读取任何给定的单元格(A1,C5等)的内容。 而已。

由于xlsx文件只是一些压缩的XML文件,因此一种方法是编写解压缩和parsingXML文件的代码。 这听起来像一个非常耗时的解决scheme,所以我宁愿使用一个免费的图书馆,如果存在。

在这里可能有用的语言中,我最擅长的是C ++和C语言,但已经完成了一些C#,VB6和VB.NET,以及一些Python。

把所有的Excel文件放在一个文件夹中,如果他们不是,请按照下列步骤操作:

  1. 打开一个空白的工作簿
  2. 打开VBA编辑器Alt + F11
  3. 添加一个模块:插入 – >模块
  4. 将以下代码添加到模块中(将目录string更改为指向您要转换的Excel文件所在的目录)
  5. 逐步通过几个文件,以确保它正在做你期望的
  6. F5在所有文件上运行
  7. 告别旧系统

码:

Option Explicit Sub ExportAllToCSV() Dim Directory As String Dim i As Long Dim file As String Directory = "C:\workbooks\" i = 1 Application.DisplayAlerts = False Application.ScreenUpdating = False ' Get the first file file = Dir(Directory, vbReadOnly + vbHidden + vbSystem) Do While file <> "" If Right(file, 4) = "xlsx" Then ' change to right(file ,3) = "xls" if you have xls files instead of xlsx Workbooks.Open Filename:=file ActiveWorkbook.SaveAs Filename:="C:\workbooks\file" & i & ".csv", FileFormat _ :=xlCSV, CreateBackup:=False ActiveWorkbook.Close i = i + 1 End If ' Get the next file file = Dir() Loop Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub 

我会build议使用Excel interop API 。 这里是一个如何使用API​​的例子。

既然你提到你可以使用C#,那么对于Excel 2007+文件, EPPlus来说是一个很好的库。 这里有一些例子让你开始:

  ExcelPackage ep = new ExcelPackage(new FileInfo("excelfile.xlsx")); // take the first sheet // or you could get the Worksheet with name : ep.Workbook.Worksheets["Sheet1"] ExcelWorksheet ws = ep.Workbook.Worksheets[0]; // now you can get data // cell data from row 3, column 2 (first row or column is 1 not 0) string data = ws.Cells[3, 2].Value.ToString(); // from A5 cell string data1 = ws.Cells["A5"].Value.ToString(); // you can find out how many rows are there int maxRow = ws.Dimension.End.Row;