为什么上面只下载最后一个文件,我想的是通过模板把不同的数据加入到里面,并导出这几个word文件,求解决方案
1条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
CSDN专家-showbo 2022-01-12 17:49最佳回答 专家已采纳通过响应头content-disposition只能下载一个文件,可以保存到服务器后用ICSharpCode.SharpZipLib.dll压缩成zip文件后下载zip文件
下面为控制台测试,能正常生成zip文件,PutEntry将文档加入压缩文件中。web直接输出下载看最后的注释,设置好响应头,BinaryWrite输出2进制数据就行
using System; using System.IO; namespace ConsoleApp2 { class Program { static void Main(string[] args) { //压缩文件 var ms = new MemoryStream(); ICSharpCode.SharpZipLib.Zip.ZipOutputStream s = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(ms); var doc = new Aspose.Words.Document(); var builder = new Aspose.Words.DocumentBuilder(doc); builder.Writeln("hello wolrd!"); PutEntry(s, doc, "1.docx"); doc = new Aspose.Words.Document(); builder = new Aspose.Words.DocumentBuilder(doc); builder.Writeln("hello wolrd again!"); PutEntry(s, doc, "2.docx"); ////////////加入更多文档,注意文件名不要重名 s.Finish(); s.Close(); var data = ms.ToArray();//压缩包2进制数据 ms.Close(); var fs = new FileStream(@"F:\t.zip", FileMode.Create);//生成文件,web附件保存看下面的注释代码 fs.Write(data, 0, data.Length); fs.Close(); /* //web下载保存 Response.AddHeader("content-disposition", "attachment;filename=\"words.zip\""); Response.BinaryWrite(data);*/ Console.ReadKey(); } /// <summary> /// 将Doc保存到内存流中获取数据并压入压缩包 /// </summary> /// <param name="s">zip数据流</param> /// <param name="doc">Aspose.Words.Document对象</param> /// <param name="zipName">压缩包中的文件名</param> static void PutEntry(ICSharpCode.SharpZipLib.Zip.ZipOutputStream s, Aspose.Words.Document doc, string zipName) { MemoryStream msDoc = new MemoryStream(); doc.Save(msDoc, Aspose.Words.SaveFormat.Docx); byte[] data = msDoc.ToArray();//得到2进制数据 Console.WriteLine(data.Length); ICSharpCode.SharpZipLib.Zip.ZipEntry entry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(zipName); entry.DateTime = DateTime.Now; s.PutNextEntry(entry); s.Write(data, 0, data.Length);//写入数据 msDoc.Close(); } } }
不想打包的实现
可以改下代码和客户端请求,C#代码每次通过参数生成此模板的文件,
客户端通过创建隐藏的iframe加载这个页面传递模板参数下载不同模板的文件
采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报 编辑记录微信扫一扫
分享评论登录 后可回复...
报告相同问题?
提交
相关推荐 更多相似问题
- 2022-01-12 17:40回答 1 已采纳 通过响应头content-disposition只能下载一个文件,可以保存到服务器后用ICSharpCode.SharpZipLib.dll压缩成zip文件后下载zip文件 下面为控制台测试,能正常生
- 2017-04-17 15:53回答 1 已采纳 aspose.words是不能按照页数删除东西的,他的结构是以section为主的,但是section会跨页的,你如果按照页数操作会断section,所以是不行的,如果你要删除空白的页面,可以尝试对s
- 2022-04-18 14:14回答 3 已采纳 原因已找到,因为使用的电脑都带有加密功能,导致未加密的文件另存为doc格式文件时自动加密,从而导致外网测试失败
- 2020-10-29 04:52本文详细讲解如何使用Aspose.Words for .NET的组件来生成word文档与水印的方法,请看本文内容。
- 2021-01-01 18:22最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来...
- 2019-09-13 21:50Aspose.Words可以在没有...我自己在.net core 2.2.6版本中正常可用,使用方法:先通过nuget包管理器安装 SkiaSharp 1.60.1 ,这个是Aspose.Words的依赖项,没装会报错。然后再引用 Aspose.Words.dll即可正常使用。
- 2020-03-06 14:26回答 2 已采纳 看下你自己的office是什么版本的 Version=13.10.0.0 这个对应不同的office的,你再查看下
- 2019-09-24 18:25回答 2 已采纳 下面的代码是java的,稍微修改即可适合C# 添加列需要遍历每一行,然后在最后一个单元格后面再插入一个单元格 ``` //Open document Document doc = new
- 2020-04-14 09:49回答 1 已采纳 spire.doc.dll的方法是:sec.PageSetup.Orientation = PageOrientation.Landscape;(出自[原文](https://www.e-iceblu
- 2019-06-10 10:22Aspose.Words for .net 18.7 破解版 可用于netcore2.0
- 2020-09-05 07:40之前在工作中,需要实现Word打印功能,并且插入图片。当时采取的方式则是使用书签进行操作。首先在word内插入书签,完成后,存为模板。程序加载该模板,找到书签,并在指定位置写入文字即可
- 2020-12-15 16:03Aspose.Words For .NET 生成word和pdf文件,支持利用模板替换其中的关键字和关键字替换为图片等操作。
- 2017-09-29 01:26回答 1 已采纳 http://www.cnblogs.com/zcm123/p/6120606.html 你看下这个又没用
- 2019-02-19 20:07回答 1 已采纳 看下html的加载,其中有没有加载到一些无效的css,这会导致阻塞一直等待加载完。 另外看下cpu 内存的占用有没有到瓶颈
- 2018-01-26 03:04回答 3 已采纳 横竖是靠纸张方向控制的。看看Page.Orientation 采纳给姐姐吧。然后下次你要下载资源,姐姐帮你下。
- 2018-04-18 13:51只需在使用前调用一下Crack方法即可达到Patch的目的,不破坏原dll的完整性,无需反编译原dll。 private static void Crack() { var stModule = new[] { "\u000E\u2008\u200A\u2001", "\u000F\u2008\u200A\u...
- 2021-08-04 17:47将演示 Aspose.Words for .NET 的一项或多项功能的插件 适用于各种文档格式的 .NET API Aspose.Words for .NET是一个强大的内部部署类库,可用于许多文档处理任务。 它使开发人员能够通过生成、修改、转换、渲染和...
- 2017-09-14 01:42回答 1 已采纳 http://blog.csdn.net/liuwen718/article/details/25978081
- 2020-09-05 08:36本篇文章是对利用Aspose.Words,在word文档中创建表格的实现方法进行了详细的分析介绍,需要的朋友参考下
- 没有解决我的问题, 去提问