【发布时间】:2019-04-01 10:09:53
【问题描述】:
我无法将 MemoryStream 中的数据附加到其他 MemoryStream 已创建完整数据。 我这样做是为了从两个不同的来源创建一个 Excel。
首先我创建父内存流:
MemoryStream obj_stream = new MemoryStream(100000000);
var tempFile = System.IO.Path.Combine(System.IO.Path.GetTempPath(), Guid.NewGuid() + ".xls");
obj_stream.Write(File.ReadAllBytes(tempFile), 0, File.ReadAllBytes(tempFile).Length);
File.Delete(tempFile);
然后我从compositeLink.ExportToXls 创建子内存流
compositeLink.CreatePageForEachLink();
compositeLink.PrintingSystemBase.XlSheetCreated += PrintingSystemBase_XlSheetCreated;
using (MemoryStream stream = new MemoryStream(100000000))
{
compositeLink.ExportToXls(stream, new XlsExportOptions() { ExportMode = XlsExportMode.SingleFilePageByPage });
obj_stream.Write(stream.ToArray(), 0, stream.ToArray().Length);
}
最后我将流写入 Page.Response
if (Page == null || Page.Response == null)
return;
string disposition = saveAsFile ? "attachment" : "inline";
Page.Response.Clear();
Page.Response.Buffer = false;
Page.Response.AppendHeader("Content-Type", string.Format("application/{0}", fileFormat));
Page.Response.AppendHeader("Content-Transfer-Encoding", "binary");
Page.Response.AppendHeader("Content-Disposition", string.Format("{0}; filename={1}.{2}", disposition, fileName, fileFormat));
Page.Response.BinaryWrite(obj_stream.ToArray());
Page.Response.End();
我认为发生的事情是其中一个或另一个被另一个覆盖,这取决于我执行“nameOfTheStream”.write() 的哪一个
【问题讨论】:
-
您不能通过将两个
.xls文件连接在一起来组合两个电子表格。 -
您必须考虑文件头等。如果您尝试连接两个 xls 文件,请考虑使用前两个文件的值填充第三个(新)xls 文件。
-
如何将多个excel文件合并为一个:stackoverflow.com/questions/27285615/…
标签: c#