2017-07-18 71 views
0

我需要將ExcelPackage另存爲XLS文件。我嘗試這樣做,我知道如何更改Web應用程序中的內容類型,但我無法在桌面環境中找到任何解決方案。C#Epplus將字節文件保存爲桌面應用程序中的XLS

現在我使用此代碼:

using (ExcelPackage p = new ExcelPackage()) 
    { 
     string filename = "OCL_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls"; 
     string PathToCSV = "App_Data/OCL/"; 
     string OCLfolder = AppDomain.CurrentDomain.BaseDirectory + PathToCSV; 
     string savepath = OCLfolder + "/" + filename; 
     System.IO.FileInfo strfilePath = new System.IO.FileInfo(savepath); 
     //create a new workbook 
     p.Workbook.Properties.Created = DateTime.Now; 
     p.Workbook.Properties.Title = filename; 
     //create a new worksheet 
     p.Workbook.Worksheets.Add(filename); 
     ExcelWorksheet ws = p.Workbook.Worksheets[1]; 
     createExcelData(ws, idCliente, idDestinatario, idSpedDati); 
     ws.Cells[ws.Dimension.Address].AutoFitColumns(); 
     for (int col = 1; col <= ws.Dimension.End.Column; col++) 
     { 
      ws.Column(col).Width = ws.Column(col).Width + 1; 
     } 
     byte[] bin = p.GetAsByteArray(); 
     strfilePath.Directory.Create(); 
     File.WriteAllBytes(savepath, bin); 
     return savepath; 
    } 

如果我將文件保存爲.xlsx格式我有沒有問題,但如果我保存爲.xls的我打開文件之前有一個錯誤:

「的文件格式不同於文件擴展名 指定格式」

+0

AFAIK'EPPlus'庫只支持MS Office 2007及以上版本的格式,所以不支持'xls'文件,僅支持'xlsx'。但是還有其他一些能夠讀寫xls文件的庫(儘管我知道的只有那些不是免費的)。 – bassfader

+0

你有沒有試過使用'ExcelPackage.Save'方法? – Sakis

+0

只需避免'xls'。它已在10年前被'xlsx'所取代。相當於'xlsx'的* binary *是'xlsb',而不是'xls'。 *免費的Google Docs,Sheets或Office 365產品*不再支持舊格式'xls'。您必須使用付費訂閱。原因是它*昂貴*。它從來沒有被記錄在第一位。它實際上*需要* Excel來進行精確處理。 –

回答

1

如果你的客戶堅持使用.XLS格式,你不能說服他們更新MS的實際支持的東西,那麼我建議你看看使用NPOI,一個用於閱讀/寫作的開源項目以前MS Office格式的文件

1

EPPlus不與XLS格式工作。只有XLSX。

相關問題