繁体   English   中英

C#用分号导出CSV文件

[英]C# Export CSV file with semicolon

我想将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文件用逗号分隔。 我已经在互联网上搜索了。 我尝试了“区域设置”和其他方法,但是都没有解决我的问题。

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

我想要以下输出: Hesap;391;TL;;;

我遇到了同样的问题-我不得不将一个项目从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过程中转换vaule来决定最后两个问题,但主要问题已解决-我们拥有所需的相同csv文件。

一些开发人员可能会认为逗号是正确的,分号不是正确的,或者这两个分隔符之间没有区别,但是如果您有一个大型项目,则服务器端的所有过程都只能以一种方式工作,因此很难设置和更正所有这些过程。

而且我不明白一件事-如果我在excel文件的字段中有逗号并且使用此方法workbook.SaveAs,我们将如何进一步获取该字段的正确值? -将有两个值而不是一个! 使用分号的情况是相同的,但是我们永远不会在Excel文件中使用分号。

对于德语系统设置:

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

只需使用Local:true即可将Separator更改为;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM