
任何想法如何解决问题? ? ?
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,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."; } } } ..
public static bool CreateExceldocument(DataSet ds,System.IO.Stream excelfileStream) { try { using (Spreadsheetdocument document = Spreadsheetdocument.Create(excelfileStream,SpreadsheetdocumentType.Workbook)) { CreateParts(ds,document); } Trace.Writeline("Successfully created: " + excelfileStream); return true; } catch (Exception ex) { Trace.Writeline("Failed,exception thrown: " + ex.Message); return false; } }..private static voID CreateParts(DataSet ds,Spreadsheetdocument document) { WorkbookPart workbookPart = document.AdDWorkbookPart(); Workbook workbook = new Workbook(); workbookPart.Workbook = workbook; // If we don't add a "WorkbookStylesPart",olEDB will refuse to connect to this .xlsx file ! WorkbookStylesPart workbookStylesPart = workbookPart.AddNewPart<WorkbookStylesPart>("rIDStyles"); Stylesheet stylesheet = new Stylesheet(); workbookStylesPart.Stylesheet = stylesheet; Sheets sheets = new Sheets(); // Loop through each of the Datatables in our DataSet,and create a new Excel Worksheet for each. uint worksheetNumber = 1; foreach (Datatable dt in ds.tables) { // For each worksheet you want to create string workSheetID = "rID" + worksheetNumber.ToString(); string worksheetname = dt.tablename; WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>(workSheetID); WriteDatatableToExcelWorksheet(dt,worksheetPart); Sheet sheet = new Sheet() { name = worksheetname,SheetID = (UInt32Value)worksheetNumber,ID = workSheetID }; sheets.Append(sheet); worksheetNumber++; } workbook.Append(sheets); }解决方法 感谢All,最后我解决了我的问题.我刚刚更换了以下代码行: byte[] data1 = new byte[fs1.Length]; fs1.Read(data1,data1.Length); fs1.Close();
用这条线
byte[] data1 = fs1.ToArray();
我的问题得到了解决.
总结以上是内存溢出为你收集整理的c# – 从ASP.NET页面下载EXCEL文件而不在服务器上生成物理文件(On The Fly)全部内容,希望文章能够帮你解决c# – 从ASP.NET页面下载EXCEL文件而不在服务器上生成物理文件(On The Fly)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)