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

Posted

技术标签:

【中文标题】如何在 ASP.NET 中保存 Microsoft.Office.Interop.Excel.Workbook【英文标题】:How to save Microsoft.Office.Interop.Excel.Workbook in ASP.NET 【发布时间】:2015-12-11 08:54:10 【问题描述】:

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

我尝试了 Response 但并没有真正成功。

PS:如果重要的话,我正在使用 ASP.NET Webforms 和 .NET 4.5。

【问题讨论】:

你能告诉我们你想要保存的代码吗?包括您的互操作对象 【参考方案1】:

Microsoft.Office.Interop.Excel 的唯一选择是将 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();

【讨论】:

以上是关于如何在 ASP.NET 中保存 Microsoft.Office.Interop.Excel.Workbook的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.Net MVC4 Web API 项目中使用 Microsoft OCR 库 ( Microsoft.Windows.Ocr )?

如何使用 Microsoft 身份平台身份验证在 ASP.NET Core Web 应用程序中获取 JWT 令牌?

使用默认的 ASP.Net MVC 设置,如何使用 Microsoft 帐户登录?

如何在单个 Microsoft ASP.NET MVC Web 应用程序中同时支持个人用户帐户和工作或学校帐户?

如何使用 javascript 将图像保存在文件夹中? ASP.NET

如何在 C# Asp.net 中将 SELECT sql 查询结果保存在数组中