如何将目录中的几个.xls(Excel)文件导出到单个.csv文件中?

时间:2012-05-14 20:23:14

标签: .net csv xls

所以我正在寻找一种方法将目录中的所有.xls文件导出到单个.csv文件中。关于我如何处理这个问题的任何想法?

具体做法是:

说我的目录包含 -

wksht1.xls
wksht2.xls
wksht3.xls
...
wksht1000.xls

如何将所有这些文件合并为一个.csv(我们​​称之为aggregate.csv)。 假设每个文件都填充了最大量的工作表/行。

所有文件都标准化为数据标准

非常感谢!

1 个答案:

答案 0 :(得分:4)

这是NON .NET解决方案(目前尚不清楚你的“.NET”标签是否暗示.NET是强制性的。)

我会像这样写一个VBS / WSH脚本并从命令行运行它:

Dim oFSO
Dim oShell, oExcel, oFile, oSheet
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("WScript.Shell")
Set oExcel = CreateObject("Excel.Application")
oExcel.DisplayAlerts = False

For Each oFile In oFSO.GetFolder("C:\").Files
  If LCase(oFSO.GetExtensionName(oFile)) = "xls" Then
    With oExcel.Workbooks.Open(oFile, 0, True, , , , True, , , , False, , False)
      For Each oSheet In .Worksheets
        oSheet.SaveAs ".\" & oFile.Name & "." & oSheet.Name, 6
      Next
      .Close False, , False
    End With
  End If
Next
oExcel.Quit
oShell.Popup "Conversion complete", 10

请注意,这可以直接从这里摘录:http://www.computing.net/answers/programming/script-convert-excel-ss-to-csv/16265.html

但我之前多次使用几乎相同的方法将Access表导出为CSV,所以我知道VBS脚本是一种可行的(也可能是最简单的)方法。

根据需要修改目录名称(即我认为您的文件不在“C:\”中。将其保存到名为export_to_csv.vbs的文件中,然后运行:

cscript export_to_csv.vbs

wscript export_to_csv.vbs