我希望我的应用程序能够找到csv excel文件并将其转换为.xlsx文件。
这是我目前正在做的事情;
var fileName = @"Z:\0328\orders\PurchaseOrder.csv";
FileInfo f = new FileInfo(fileName);
f.MoveTo(Path.ChangeExtension(fileName, ".xlsx"));
var Newfile = @"Z:\0328\orders\PurchaseOrder.xlsx";
现在可以正常工作。它将文件扩展名更改为我想要的格式。然而,该文件然后变得“腐败”或至少Excel拒绝打开它,当我尝试进一步冒险时我的应用程序也不会。
有没有人有解决方案/解决方法?
答案 0 :(得分:12)
我会解析CSV文件并使用它来写出一个Excel文件:https://github.com/JanKallman/EPPlus
答案 1 :(得分:11)
对于那些想要使用Interop而不是外部库的人,您可以这样做:
Application app = new Application();
Workbook wb = app.Workbooks.Open(@"C:\testcsv.csv", 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, Type.Missing);
wb.SaveAs(@"C:\testcsv.xlsx", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wb.Close();
app.Quit();
Workbook.SaveAs的第二个参数确定文件的真实格式。您应该使文件扩展名与该格式匹配,以便Excel不会抱怨损坏。您可以在MSDN上查看类型列表及其含义。
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlfileformat.aspx
与往常一样,如果此功能适用于服务器环境,请记住Microsoft的注意事项。在这种情况下,Interop可能不是最佳选择:
答案 2 :(得分:5)
此代码应该打开您想要的文件并将其保存为格式而不会破坏它。
关闭它
using Excel = Microsoft.Office.Interop.Excel;
private void Convert_CSV_To_Excel()
{
// Rename .csv To .xls
System.IO.File.Move(@"d:\Test.csv", @"d:\Test.csv.xls");
var _app = new Excel.Application();
var _workbooks = _app.Workbooks;
_workbooks.OpenText("Test.csv.xls",
DataType: Excel.XlTextParsingType.xlDelimited,
TextQualifier: Excel.XlTextQualifier.xlTextQualifierNone,
ConsecutiveDelimiter: true,
Semicolon: true);
// Convert To Excle 97 / 2003
_workbooks[1].SaveAs("NewTest.xls", Excel.XlFileFormat.xlExcel5);
_workbooks.Close();
}
答案 3 :(得分:2)
我建议使用以下技术:
优点:
答案 4 :(得分:1)
尝试本课程;可以使用带有分隔符(包括标签)的任何CSV或TXT文件,并将其转换为Excel(.xls)
示例:
convertToExcel(@“文件路径”,“ \ |”,“ .txt”);
java.lang.Long
答案 5 :(得分:0)
我建议Closed XML这是Open XML SDK的包装器。看看他们的例子。创建.xlsx文件非常简单。