如何在ASP.NET中保存Microsoft.Office.Interop.Excel.Workbook

所以问题是我有一个在代码中创build的Microsoft.Office.Interop.Excel对象,我想保存它。 但是,我希望用户能够select文件将被保存的位置。

我试着回应,但没有真正成功。

PS:我正在使用ASP.NET Webforms和.NET 4.5。

您使用Microsoft.Office.Interop.Excel的唯一select是将Excel文件保存到您的服务器,然后将文件传输到客户端。

如果这不是你想要的,你可以使用NPOI 。 你可以把它作为一个NuGet Package 。 NPOI CodePlex

使用Microsoft.Office.Interop.Excel

 string filname = @"C:\Upload\filename.xls"; workBook.SaveAs(filname) workBook.Close(); Response.ContentType = "application/vnd.ms-excel"; //xls // For xlsx, use: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Response.AddHeader(String.Format("content-disposition", "attachment; filename={0}"), Path.GetFileName(filename)); Response.TransmitFile(filname); Response.End(); 

NPOI

 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("SheetName"); using (MemoryStream exportData = new MemoryStream()) { workbook.Write(exportData); Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-1"); Response.Charset = Encoding.GetEncoding("ISO-8859-1").EncodingName; Response.ContentType = "application/vnd.ms-excel"; //xls // For xlsx, use: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Response.AddHeader("content-disposition", String.Format("attachment; filename={0}.xls", "yourFilename")); Response.Clear(); Response.BinaryWrite(exportData.GetBuffer()); Response.End(); }