excel - 使用 VB.NET 将 CSV 转换为 XLSX:分隔符错误
问题描述
我想将 .CSV 文件转换为 .XLSX。
到目前为止我有这个代码
Public Sub CreateExcelFromCsvFile(ByVal strFolderPath As String)
Dim oExcelFile As ObjectOpen Excel application object
Try
oExcelFile = GetObject(, "Excel.Application")
Catch
oExcelFile = CreateObject("Excel.Application")
End Try
oExcelFile.Visible = False
oExcelFile.Workbooks.Open(strFolderPath)
' Turn off message box so that we do not get any messages
oExcelFile.DisplayAlerts = False
' Save the file as XLS file
Dim adr As String = ""
For i = 0 To btn_chemin_source.Tag.ToString.Split("\").Count - 2
adr += btn_chemin_source.Tag.ToString.Split("\")(i) & "\"
Next
With oExcelFile.ActiveWorkbook
.SaveAs(Filename:=adr & "RD.xlsx", FileFormat:=Excel.XlFileFormat.xlOpenXMLWorkbook, CreateBackup:=False, Local:=True)
.Close(False)
End With
' Close the workbook
'oExcelFile.ActiveWorkbook.Close(SaveChanges:=False)
' Turn the messages back on
oExcelFile.DisplayAlerts = True
' Quit from Excel
oExcelFile.Quit()
' Kill the variable
oExcelFile = Nothing
End Sub
我的问题是,即使我在谷歌上搜索了一些线索来选择“面板控制>区域”中的分隔符并在 SaveAs 方法中使用 local=True,VB 仍然继续使用逗号而不是分号作为分隔符,所以我的 Excel 文件无法使用。
在将 CSV 保存到 xlsx 时,您对如何选择选定的分隔符有任何提示吗?:)
非常感谢您的宝贵时间!
解决方案
所以我不知道是否必须有一个答案才能将主题标记为已解决,但如果这是在评论中找到我的 MacroMarc 的解决方案:
不要使用 saveAs 函数将 csv 文件保存为 excel,而是使用带有 Local:=True 的 OpenText 方法;最后 SaveAs 一个没有特定参数的 xlsx :
代替 :
oExcelFile.Workbooks.Open(strFolderPath)
oExcelFile.ActiveWorkbook.SaveAs(Filename:=path, FileFormat:=Excel.XlFileFormat.xlOpenXMLWorkbook, CreateBackup:=False, Local:=True)
用这个 :
oExcelFile.Workbooks.OpenText(Filename:=strFolderPath, Local:=True)
oExcelFile.ActiveWorkbook.SaveAs(Filename:=path, FileFormat:=Excel.XlFileFormat.xlOpenXMLWorkbook, CreateBackup:=False)
再次感谢您的帮助!:)
推荐阅读
- python - how do I set an app path to get the image I upload on flask?
- sql - 从 FROM 中的子查询中获取 max 属性的行
- r - 按日期范围分组数据 R
- python - 有没有办法得到随机生成的数字的总和?
- php - 如何在php中组合foreach循环
- ruby-on-rails - 如何解决这个印象派宝石错误?
- amazon-web-services - 在 AWS Lambda 层中找到等效的环境变量?
- r - 无法通过 ShinyR 中的 if 语句获得禁用按钮以与 observeEvent 一起使用
- flutter - setState 未定义 | 不需要定义?
- linux - dotnet CLI 运行没有 cs 文件的单个字符串,例如 dotnet run "System.Console(DateTime.Now);" 在 Linux 上