c# - 将 Excel 文件从 .csv 转换为 .xlsx

标签 c# winforms

我希望我的应用程序能够找到 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 拒绝打开它,当我尝试进一步冒险时我的应用程序也不会。

有没有人有解决方案/解决方法?

最佳答案

对于那些想要使用 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 的注意事项。在这种情况下,互操作可能不是可行的方法:

http://support.microsoft.com/kb/257757

关于c# - 将 Excel 文件从 .csv 转换为 .xlsx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732343/

相关文章:

c# - 如何在 RadGridView 中的单元格值更改时触发事件?

c# - 类和数据类型有什么区别?

c# - Razor MVC3 在返回 View 时保持全局变量集

c# - Winforms窗体边框样式FixedSingle和FixedDialog?

C#垂直制表符控件

c# - 使用多显示器设置在 C# 中获取真正的主屏幕?

c# - 构造函数初始化期间出现问题-下一步是什么?

javascript - 如何将启动 Bootstrap 模板添加到 asp.net mvc web 应用程序?

c# - 在不返回 void、Task 或 Task<T> 的方法中等待某些内容的正确方法?

c# - protobuf-net - 为什么反序列化对象后引用同一对象不相等