这是一个只能创建xls文件的代码。但是我想创建xlsx(Excel)文件;我该如何从此代码中做到这一点,否则我可以拥有另一个可用于创建 xlsx 文件的代码。
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("Excel is not properly installed!!");
return;
}
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "ID";
xlWorkSheet.Cells[1, 2] = "Name";
xlWorkSheet.Cells[2, 1] = "1";
xlWorkSheet.Cells[2, 2] = "One";
xlWorkSheet.Cells[3, 1] = "2";
xlWorkSheet.Cells[3, 2] = "Two";
xlWorkBook.SaveAs("d:\vdfgdfg.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(xlApp);
MessageBox.Show("Excel file created , you can find the file d:\csharp-Excel.xls");
}
请尝试以下更新的代码。
public void CreateExcel()
{
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("Excel is not properly installed!!");
return;
}
Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "ID";
xlWorkSheet.Cells[1, 2] = "Name";
xlWorkSheet.Cells[2, 1] = "1";
xlWorkSheet.Cells[2, 2] = "One";
xlWorkSheet.Cells[3, 1] = "2";
xlWorkSheet.Cells[3, 2] = "Two";
//Here saving the file in xlsx
xlWorkBook.SaveAs("d:\vdfgdfg.xlsx", Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, misValue,
misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
Marshal.ReleaseComObject(xlWorkSheet);
Marshal.ReleaseComObject(xlWorkBook);
Marshal.ReleaseComObject(xlApp);
MessageBox.Show("Excel file created , you can find the file d:\csharp-Excel.xlsx");
}
看看我的 SwiftExcel 库。它的设计是为了快速轻松地输出excel,更重要的是 - 性能。
using (var ew = new ExcelWriter("C:\temp\test.xlsx"))
{
ew.Write("ID", 1, 1);
ew.Write("Name", 2, 1);
ew.Write("1", 1, 2);
ew.Write("One", 2, 2);
ew.Write("2", 1, 3);
ew.Write("Two", 2, 3);
}
看看EasyXLS。它是一个创建 xlsx 文件的库。
ExcelDocument workbook = new ExcelDocument(1);
// Set the sheet name
workbook.easy_getSheetAt(0).setSheetName("Sheet1");
// Add data
ExcelTable xlsTable = ((ExcelWorksheet)workbook.easy_getSheetAt(0)).easy_getExcelTable();
xlsTable.easy_getCell(0, 0).setValue("ID");
xlsTable.easy_getCell(0, 1).setValue("Name");
xlsTable.easy_getCell(1, 0).setValue("1");
xlsTable.easy_getCell(1, 1).setValue("One");
xlsTable.easy_getCell(2, 0).setValue("2");
xlsTable.easy_getCell(2, 1).setValue("Two");
// Create Excel file
workbook.easy_WriteXLSXFile("d:\vdfgdfg.xlsx");
更多信息见:
http://www.easyxls.com/manual/basics/create-excel-file.html
尝试OpenXML库,应该可以解决问题,在以下位置找到更多信息
使用 c# 中的 Open Xml SDK 将数据表导出到 Excel
附言:除非在计算机上安装了 excel,否则互操作将不起作用。
替换以下行:
xlWorkBook.SaveAs("d:\vdfgdfg.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
用这一行:xlWorkBook.SaveAs("d:\vdfgdfg.xlsx");