C#用分号导出CSV文件

时间:2014-03-18 13:20:35

标签: c# csv export

我想将Excel文件转换为csv,我写了这个C#代码:

Excel.Application excelApp = new Excel.ApplicationClass();
Excel.Workbooks workBooks = excelApp.Workbooks;
excelApp.DisplayAlerts = false;
Excel.Workbook workBook = workBooks.Open(sourceFile,
                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                    Type.Missing, Type.Missing, Type.Missing, ';',
                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                    Type.Missing, Type.Missing);
workBook.SaveAs(csvFilePath, Excel.XlFileFormat.xlCSV, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workBook.Close(false, sourceFile, null);
excelApp.DisplayAlerts = true;
Excel.Application app = excelApp.Application;
app.Quit(); 
Marshal.ReleaseComObject(workBooks);
Marshal.ReleaseComObject(workBook);
Marshal.ReleaseComObject(excelApp);
Marshal.ReleaseComObject(app);
sourceFile = csvFilePath;

但是csv文件用逗号分隔。我在互联网上搜索过。我试过了Region Setting和其他东西,但没有一个能解决我的问题。

示例输出:Hesap,391,TL,,,

我想要这个输出:Hesap;391;TL;;;

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题, - 我不得不将一个项目从Windows Server 2003迁移到Windows Server 2012,而这一个

workBook.SaveAs(csvFilePath, Excel.XlFileFormat.xlCSV, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

和csv文件用逗号而不是分号分隔。 我找到了一个帮助我避免这个问题的解决方案

格式:

 oBook.SaveAs(newFileName, XlFileFormat.xlUnicodeText,
            missing, missing, false, false,
            XlSaveAsAccessMode.xlNoChange,
            missing, missing, missing, missing, missing);

在我以这种方式重写文件之后:

 string text = File.ReadAllText(newFileName);
            text = text.Replace("\t", ";").Replace("{tab}", "\t");
            File.WriteAllText(newFileName, text, Encoding.UTF8);

所以我用分号分隔csv文件。 但是剩下的另一个问题 - 带有日期和浮点值的文件有另一种格式, - 日期是10/5/2015 18:54而不是5.10.2015 18:54而浮点值是5.55而不是5,55。

我认为我将通过在oracle过程中转换vaules来决定最后两个问题,但主要问题是通过 - 我们需要相同的csv文件。

有些开发人员可能认为逗号是正确的,而分号没有,或者这些删除器之间没有区别,但是如果你有一个大项目,那么服务器端的所有程序都以一种方式工作,很难设置和纠正所有他们

我不明白一件事 - 如果我在excel文件中有一个逗号并使用此方法工作簿。那么,我们将如何进一步采用该字段的正确值? - 将有两个值而不是一个!分号的情况是一样的,但我们从不在Excel文件中使用分号。

答案 1 :(得分:0)

对于德语系统设置:

xlVorlBook.SaveAs(sDatei, FileFormat: Excel.XlFileFormat.xlCSV, Local: true);

只需使用Local:true即可将分隔符更改为;