Excel 将Xlsx转换为CSV UTF-8格式

Excel 将Xlsx转换为CSV UTF-8格式,excel,vba,utf-8,character-encoding,export-to-csv,Excel,Vba,Utf 8,Character Encoding,Export To Csv,我想使用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 =

我想使用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
简单地说:

ActiveWorkbook.SaveAs Filename:="C:\yourPath\yourFileName.csv", FileFormat:=xlCSVUTF8

更多信息:

  • MSDN:

由于要将外部文件转换为外部文件,因此不需要在Excel中使用VBA进行转换。这打开了一些可能性。使用OpenXMLSDK,您甚至不需要Excel

OpenXMLSDK使用起来有点困难,因此有一些包装器可用于优化工作簿编程。EPPlus有一个PowerShell包装,名为。这使得在PowerShell中执行此任务非常简单

一次性安装,通常作为管理员:

Install-Module PSExcel
每个PowerShell会话一次:

Import-Module PSExcel
然后:

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



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

由于我是vba新手,如何在不使用ActiveWorkBook的情况下将其集成到现有脚本中此解决方案仅适用于office 2016。如何在office 2010中实现这一点office 2016之前的一种解决方法是将
xlUnicodeText
分配给FileFormat参数,例如
thiswoolk.SaveAs Filename:=thiswoolk.Path&“\test.txt”,FileFormat:=xlUnicodeText
。此后,您可以手动更改分隔符,或将文本文件另存为“test.csv”或其他格式。即使在使用Excel 2016(我正在使用)时,对于某些用户,xlCSVUTF8也存在未定义的问题。我已经搜索了一段时间,但没有找到任何关于如何修复它的信息。请参阅VBA的优点是它与文档一起存储并在文档的上下文中运行。您似乎正在处理外部文件。使用不同的编程环境(如PowerShell)是否更合适?如何使用powershell实现它
Import-Module PSExcel
Import-XLSX 'C:\shrangi\SX_Hospital.xlsx' | Export-CSV 'C:\shrangi\SX_Hospital.csv' -Encoding UTF8