小编San*_*alp的帖子

从ASP.NET页面下载EXCEL文件而不在服务器上生成物理文件(On The Fly)

我正在尝试使用Microsoft Office EXCEL INTEROP将C#DataTable动态导出到EXCEL文件(不创建物理文件),并通过asp.net网页通过Response对象下载.我能够使用库生成内存流但不知何故文件没有通过内存流保存.参考代码如下.您将需要参考DocumentFormat.OpenXml.dll和WindowsBase.DLL(可以从microsoft站点下载).

任何想法如何解决问题???

Private void DownloadFile()
{
                DataSet objTable = ReadTableFromViewstate();
            if (objTable != null && objTable.Rows.Count > 0)
            {

                string strDownloadableFilename = "TestExcelFileName.xls";
                MemoryStream fs1 = new MemoryStream();
                if (CreateExcelFile.CreateExcelDocument(objTable, fs1))
                {
                    Response.Clear();
                        byte[] data1 = new byte[fs1.Length];
                        fs1.Read(data1, 0, data1.Length);
                        fs1.Close();

                    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", strDownloadableFilename));
                    Response.BinaryWrite(data1); ;
                   Response.End();

                }
                else
                {
                    LblErrorMessage.Text = "Error Exporting File.";
                }
            }

        }
Run Code Online (Sandbox Code Playgroud)

..

public static bool CreateExcelDocument(DataSet ds, System.IO.Stream excelFileStream)
    {
        try
        {
            using (SpreadsheetDocument document …
Run Code Online (Sandbox Code Playgroud)

c# asp.net openxml office-interop openxml-sdk

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

asp.net ×1

c# ×1

office-interop ×1

openxml ×1

openxml-sdk ×1