【问题标题】:Workbooks.Open function ignores set delimiterWorkbooks.Open 函数忽略设置分隔符
【发布时间】:2021-08-29 14:51:48
【问题描述】:

我需要将 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 文件是使用 ',' 作为分隔符打开的。

这里有什么问题?

【问题讨论】:

标签: c# excel-interop


【解决方案1】:

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

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

这是工作代码:

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(); 

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 2018-03-25
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2011-11-04
    • 2018-04-05
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多