【问题标题】:Conversion CSV to XLSX with VB.NET : Wrong delimiter使用 VB.NET 将 CSV 转换为 XLSX:分隔符错误
【发布时间】:2018-10-22 16:13:56
【问题描述】:

我想将 .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 时,您对如何选择选定的分隔符有任何提示吗? :)

非常感谢您的宝贵时间!

【问题讨论】:

  • 我无法理解。看起来您打开文件,然后将其另存为 Excel XML。我不认为 Excel XML 使用分隔符,它使用 XML。您是指 CSV 输入的分隔符,还是打算将其保存为 CSV 而不是 XML?
  • 你要从 CSV 到 xlsx,对吧?所以你的问题是当你打开 csv 文件时?然后查看 OpenText 方法:oExcelFile.Workbooks.OpenText(Filename:=strFolderPath, Local:=True, Semicolon:=True)。也许不需要本地和分号,但值得一试。看看会发生什么
  • 你好 tgolisch,对不起我的英语不好;是的,我正在尝试将带有分号分隔符的 CSV 文件转换为 .xlsx,但问题是 vb.net 选择逗号作为分隔符来填充单元格,而不是使用 SaveAs 方法尝试的分号。 @MacroMarc 非常感谢您,它运行良好!单独查看参数后,分号似乎没有做任何事情,但是 Local 用 OpenText 方法解决了问题!

标签: excel vb.net csv


【解决方案1】:

所以我不知道是否必须有一个答案才能将主题标记为已解决,但如果这是在 cmets 中找到我的 MacroMarc 的解决方案:

不要使用 saveAs 函数将 csv 文件保存为 excel,而是使用 OpenText 方法和 Local:=True;最后 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)

再次感谢您的帮助! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多