[英]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.