首页 > 解决方案 > 使用 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 时,您对如何选择选定的分隔符有任何提示吗?:)

非常感谢您的宝贵时间!

标签: excelvb.netcsv

解决方案


所以我不知道是否必须有一个答案才能将主题标记为已解决,但如果这是在评论中找到我的 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)

再次感谢您的帮助!:)


推荐阅读