2017-01-12 7 views
1

Это код, который может создать только файл xls. Но я хочу создать файл xlsx (Excel); как я могу это сделать из этого кода, иначе я могу получить еще один код, который мог бы использовать для создания xlsx-файлов.Я хочу создать файл xlsx (Excel) из C#

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

Возможный дубликат [Экспорт в .xlsx, используя Microsoft.Office.Interop.Excel SaveAs Error] (http://stackoverflow.com/questions/9769703/exporting -to-xlsx-using-microsoft-office-interop-excel-saveas-error) –

+0

Вы просмотрели https://www.nuget.org/packages/GemBox.Spreadsheet? Это компонент, который не требует excel, и есть бесплатная лицензия для небольших листов. –

ответ

6

Пожалуйста, попробуйте обновленный код.

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

Я попробовал его, когда он работал доцент, он сохраняет файл xlsx, но не может его открыть. –

+0

Попробуйте мой обновленный код. Он работает правильно. Он сохранит excel в **. XLSX ** и откроет его тоже. –

0

Посмотрите на 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