Workbooks.Open 函数忽略设置的分隔符

Workbooks.Open function ignores set delimiter

我需要将 csv 文件转换为 xlsx。 我想使用互操作功能。

csv文件以分号分隔,但open函数忽略设置的分隔符

这是我的代码:

Excel.Application app = new Excel.Application();
app.Visible = true;
Excel.Workbooks workbooks = app.Workbooks;
Excel.Workbook wb = app.Workbooks.Open(sourceFile, 
                                       Type.Missing,
                                       Type.Missing,
                                       Excel.XlFileFormat.xlCSV,   // Format
                                       Type.Missing,
                                       Type.Missing,
                                       Type.Missing,
                                       Type.Missing,
                                       ";",          // Delimiter
                                       Type.Missing,
                                       Type.Missing,
                                       Type.Missing,
                                       Type.Missing,
                                       Type.Missing,
                                       Type.Missing);
workbooks[1].SaveAs(newXLSXPath, Excel.XlFileFormat.xlOpenXMLWorkbook);
workbooks.Close(); 

当我打开新的 xlsx 文件时,我可以看到 csv 文件是使用“,”作为分隔符打开的。

这是怎么回事?

感谢 Rand Random 的评论,我更仔细地阅读了那个问题,发现了不同之处。

您必须将“本地”参数设置为真!否则它会忽略分隔符并使用默认逗号。

这是工作代码:

Excel.Application app = new Excel.Application();
app.Visible = true;
Excel.Workbooks workbooks = app.Workbooks;
Excel.Workbook wb = app.Workbooks.Open(sourceFile, 
                                   Type.Missing,
                                   Type.Missing,
                                   Excel.XlFileFormat.xlCSV,   // Format
                                   Type.Missing,
                                   Type.Missing,
                                   Type.Missing,
                                   Type.Missing,
                                   ";",          // Delimiter
                                   Type.Missing,
                                   Type.Missing,
                                   Type.Missing,
                                   Type.Missing,
                                   true,  // <--- THIS WAS MISSING!
                                   Type.Missing);
workbooks[1].SaveAs(newXLSXPath, Excel.XlFileFormat.xlOpenXMLWorkbook);
workbooks.Close();