我想将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;;;
答案 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即可将分隔符更改为;