Excel 使用VB.NET将CSV转换为XLSX:分隔符错误

Excel 使用VB.NET将CSV转换为XLSX:分隔符错误,excel,vb.net,csv,Excel,Vb.net,Csv,我想将.CSV文件转换为.XLSX文件 到目前为止,我有这个代码 Public Sub CreateExcelFromCsvFile(ByVal strFolderPath As String) Dim oExcelFile As ObjectOpen Excel application object Try oExcelFile = GetObject(, "Excel.Application") Catch

我想将.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
我的问题是,即使我在google上搜索了一些线索,在“Panel Control>region”中选择分隔符,并在SaveAs方法中使用local=True,VB仍然使用逗号作为分隔符,而不是分号,因此我的Excel文件无法使用

关于如何在将CSV保存到xlsx时选择所选分隔符,您有什么提示吗?:)


非常感谢您抽出时间

因此,我不知道是否必须有答案才能将主题标记为已解决,但如果是这样的话,我在评论中找到了解决方案:

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

再次感谢您的帮助!:)

因此,我不知道是否必须有答案才能将主题标记为已解决,但如果是这样的话,我在评论中找到了解决方案:

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

再次感谢您的帮助!:)

我很难理解。看起来您打开了该文件,然后将其另存为Excel XML。我不认为Excel XML使用分隔符,它使用XML。您是指CSV输入的分隔符,还是打算将其保存为CSV而不是XML?您将从CSV转换为xlsx,对吗?那么你的问题是什么时候打开csv文件?然后查看OpenText方法:
oExcelFile.Workbooks.OpenText(文件名:=strFolderPath,本地:=True,分号:=True)
。也许不需要本地和分号,但值得一试。看看发生了什么你好,我的英语不好,很抱歉;是的,我正在尝试将带有半冒号分隔符的CSV文件转换为.xlsx,但问题是vb.net选择coma作为分隔符来填充单元格,而不是分号,无论我使用SaveAs方法尝试了什么@非常感谢,它工作得非常好!单独查看这些参数后,分号似乎没有任何作用,但使用OpenText方法解决了这个问题!我很难理解。看起来您打开了该文件,然后将其另存为Excel XML。我不认为Excel XML使用分隔符,它使用XML。您是指CSV输入的分隔符,还是打算将其保存为CSV而不是XML?您将从CSV转换为xlsx,对吗?那么你的问题是什么时候打开csv文件?然后查看OpenText方法:
oExcelFile.Workbooks.OpenText(文件名:=strFolderPath,本地:=True,分号:=True)
。也许不需要本地和分号,但值得一试。看看发生了什么你好,我的英语不好,很抱歉;是的,我正在尝试将带有半冒号分隔符的CSV文件转换为.xlsx,但问题是vb.net选择coma作为分隔符来填充单元格,而不是分号,无论我使用SaveAs方法尝试了什么@非常感谢,它工作得非常好!单独查看这些参数后,分号似乎没有任何作用,但使用OpenText方法解决了这个问题!