【问题标题】:I want to create xlsx (Excel) file from c#我想从 c# 创建 xlsx (Excel) 文件
【发布时间】:2017-01-12 05:21:50
【问题描述】:

这是一个只能创建 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");
        }

【问题讨论】:

标签: c# excel cell creation


【解决方案1】:

请尝试以下更新的代码。

    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");
    }

【讨论】:

  • 我试过一次它不起作用它只保存一个xlsx文件但无法打开它
  • 请尝试我更新的代码。它工作正常。它会将excel保存在.XLSX中并且也会打开它。
【解决方案2】:

看看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

【讨论】:

    【解决方案3】:

    试试 OpenXML 库,应该可以解决问题,在

    找到更多

    Export DataTable to Excel with Open Xml SDK in c#

    附: Interop 将无法工作,除非机器上安装了 excel。

    【讨论】:

      【解决方案4】:

      看看我的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);
      }
      

      【讨论】:

        【解决方案5】:

        替换以下行:

         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");

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-24
          • 1970-01-01
          • 2017-11-08
          • 2018-03-15
          • 2017-05-09
          • 2020-06-04
          • 2018-11-17
          • 1970-01-01
          相关资源
          最近更新 更多