我想使用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:\shrangi\SX_Hospital.xlsx"
parF2 = "C:\shrangi\SX_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
答案 0 :(得分:1)
简单地:
ActiveWorkbook.SaveAs Filename:="C:\yourPath\yourFileName.csv", FileFormat:=xlCSVUTF8
更多信息:
答案 1 :(得分:0)
由于您要将外部文件转换为外部文件,因此您不需要在Excel中使用VBA执行此操作。这开辟了一些可能性。使用OpenXML SDK,您甚至不需要Excel。
OpenXML SDK有点难以使用,所以有一些包装器可以优化工作簿编程。 EPPlus有一个名为PSExcel的PowerShell包装器。它使PowerShell中的任务变得非常简单
一次性设置,通常作为管理员:
Install-Module PSExcel
每个PowerShell会话一次:
Import-Module PSExcel
然后:
Import-XLSX 'C:\shrangi\SX_Hospital.xlsx' | Export-CSV 'C:\shrangi\SX_Hospital.csv' -Encoding UTF8
对于简单的工作簿,这就是你所需要的。
关于CSV的附注:从xlsx转换为csv会抛出几乎所有元数据,并引入了对更多元数据的需求。与文件一起,您需要传达字符编码,每列的数据类型,是否有标题行,行终止符,字段分隔符(不总是逗号),特定于文化的数字格式,引号字符(又名&#34;文本限定符&#34;),以及引号字符转义机制。您可以在使用文本导入向导时看到Excel必须询问的所有问题。