所以问题是我在代码中创建了一个 Microsoft.Office.Interop.Excel 对象,我想保存它。但是,我希望用户能够选择保存文件的位置。
我尝试使用Response但没有成功。
PS:如果重要的话我会使用ASP.NET Webforms和.NET 4.5。
答案 0 :(得分:2)
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();
}