将 Xlsx 转换为 CSV UTF-8 格式



我想使用 vb 脚本或宏将我的XLXS 文件转换为 CSV UTF-8 格式

if WScript.Arguments.Count < 2 Then
WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"enter code here

上述脚本适用于普通格式。

请帮助我转换为 UTF-8 格式

我也尝试了下面的代码,但它会转换为垃圾字符

Public Sub convert_UnicodeToUTF8()
Dim parF1, parF2 As String
parF1 = "C:shrangiSX_Hospital.xlsx"
parF2 = "C:shrangiSX_Hospital.csv"
Const adSaveCreateOverWrite = 2
Const adTypeText = 2
Dim streamSrc, streamDst ' Source / Destination
Set streamSrc = CreateObject("ADODB.Stream")
Set streamDst = CreateObject("ADODB.Stream")
streamDst.Type = adTypeText
streamDst.Charset = "UTF-8"
streamDst.Open
With streamSrc
.Type = adTypeText
.Charset = "UTF-8" 
.Open
.LoadFromFile parF1
.copyTo streamDst
.Close
End With
streamDst.SaveToFile parF2, adSaveCreateOverWrite
streamDst.Close
Set streamSrc = Nothing
Set streamDst = Nothing
End Sub

简单地说:

ActiveWorkbook.SaveAs Filename:="C:yourPathyourFileName.csv", FileFormat:=xlCSVUTF8

更多信息:

  • MSDN:工作簿保存为方法

由于您要将外部文件转换为外部文件,因此无需使用 VBA 在 Excel 中执行此操作。这开辟了一些可能性。使用OpenXML SDK,您甚至不需要Excel。

OpenXML SDK有点难以使用,因此有一些包装器可以优化工作簿编程。EPPlus周围有一个PowerShell包装器,称为PSExcel。它使这项任务在PowerShell中变得非常容易

。一次性设置,通常作为管理员:

Install-Module PSExcel

每个 PowerShell 会话一次:

Import-Module PSExcel

然后:

Import-XLSX 'C:shrangiSX_Hospital.xlsx' | Export-CSV 'C:shrangiSX_Hospital.csv' -Encoding UTF8

对于一个简单的工作簿,这就是您所需要的。


关于 CSV 的旁注:从 xlsx 转换为 csv 会丢弃几乎所有元数据,并引入对更多元数据的需求。与文件一起,您需要传达字符编码、每列的数据类型、是否存在标题行、行终止符、字段分隔符(并不总是逗号)、区域性特定的数字格式、引号字符(也称为"文本限定符")和引号字符转义机制。您可以看到 Excel 在使用其文本导入向导时必须提出的所有这些问题。

最新更新