批量保存 htm
公司项目,需要对一个列表做批量保存到Doc的功能。
后来通过架构人员协助,采用MemoryStream二进制流的方式保存为htm文档。
然后通过第3方的dll,ICSharpCode.SharpZipLib打包成zip文件。
抛弃doc的原因是流的形式保存为doc,office会解析为htm,但是Word样式很难维护,出现表格变粗的情况。
本地解压缩,从而实现批量保存的功能。
代码如下,
public void CreateZip()
{
List<MemoryStream> memList = new List<MemoryStream>();
for (int i = 0; i < 200; i++)
{
string a = @"<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf8'>
<title>Ctrip.com Internet & Intranet - ViewEmail</title>
</head>
<body>
<h1>test</h1>
</body>
</html>";
byte[] b = Encoding.GetEncoding("gb2312").GetBytes(a);
MemoryStream mstream = new MemoryStream();
mstream.Write(b, 0, b.Length);
memList.Add(mstream);
}
MemoryStream ms = new MemoryStream();
using (ZipFile zipF = ZipFile.Create(ms))
{
zipF.BeginUpdate();
for (int i = 0; i < memList.Count; i++)
{
zipF.Add(new MemoryDataSource(memList[i].GetBuffer()), "a" + i.ToString() + ".htm");
}
zipF.CommitUpdate();
}
//将MemoryStream转换,否则发送时候可能出错
byte[] byteBuffer = ms.ToArray();
ms.Flush();
ms.Close();
Response.Clear();
Response.ContentType = "Application/zip";
Response.AppendHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("test" + DateTime.Now.ToString("yyyyMMdd") + ".zip", System.Text.Encoding.UTF8));
Response.BinaryWrite(byteBuffer);
Response.End();
} protected void Button1_Click(object sender, EventArgs e)
{
CreateZip();
} class MemoryDataSource : IStaticDataSource
{
#region Constructors
/// <summary>
/// Initialise a new instance.
/// </summary>
/// <param name="data">The data to provide.</param>
public MemoryDataSource(byte[] data)
{
data_ = data;
}
#endregion #region IDataSource Members
/// <summary>
/// Get a Stream for this <see cref="IStaticDataSource"/>
/// </summary>
/// <returns>Returns a <see cref="Stream"/></returns>
public Stream GetSource()
{
return new MemoryStream(data_);
}
#endregion
#region Instance Fields
readonly byte[] data_;
#endregion
}
批量保存 htm的更多相关文章
- mybatis批量保存的两种方式(高效插入)
知识点:mybatis中,批量保存的两种方式 1.使用mybatis foreach标签 2.mybatis ExecutorType.BATCH 参考博客:https://www.jb51.net/ ...
- .NET DLL 保护措施应用实例(百度云批量保存工具)
最近做了个小工具,将保护措施思路全部应用到了此工具中. 点我下载 百度云批量保存工具是一款专门用于自动批量保存百度云分享的软件. 本软件特点:1:完全模拟人工操作:2:可以批量保存百度分享的文件( ...
- sqlbulkcopy 多表批量保存
/// <summary> /// 批量保存多表 /// </summary> /// <param name="dt1"></param ...
- 使用EntityManager批量保存数据
@PersistenceContext EntityManager em; 从别的系统中定期同步某张表的数据,由于数据量较大,采用批量保存 JPA EntityManager的四个主要方法 ① pub ...
- Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本
Howto: 在ArcGIS10中将地图文档(mxd文档)批量保存到之前版本 文章编号 : 38783 软件: ArcGIS - ArcEditor 10 ArcGIS - ArcInfo 10 A ...
- mybatis单笔批量保存
在上一篇写了接口调用解析返回的xml,并赋值到实体.这一篇主要介绍,如何保存实体数据. 一,xml样例 <?xml version="1.0" encoding=" ...
- Jquery Easy UI Datagrid 上下移动批量保存数据
DataGrid with 上下移动批量保存数据 通过前端变量保存修改数据集合,一次性提交后台执行 本想结合easyui 自带的$('#dg').datagrid('getChanges'); 方法来 ...
- springboot jpa 批量保存数据--EntityManager和 JpaRepository
1: 项目里面使用springboo-boot-start-data-jpa操作数据库,通过源码,在repository上继承JpaRepository 可以实现保存操作,其中源码接口为: <S ...
- delphi dbgrid 批量保存
unit uzcdbadd; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Fo ...
随机推荐
- SAP系统管理中常见问题解答(转载)
1.如何查看SAP系统的位数? system——status看 Platform ID Platform 32-bit 64-bit --------------------------------- ...
- bat 服务启动脚本
当电脑上有多个数据库(特别是Oracle,占用内存大,所以我都是设置为手动启动的,或者想在电脑上运行一下其他UI类软件或玩些游戏的时候也需要暂时关掉,奈何我这渣机(V_V))需要启动或停止的时候,就用 ...
- (82)zabbix如何选择适合的监控类型
zabbix提供十几种监控类型,包括:Zabbix agent, Simple checks, SNMP, Zabbix internal, IPMI, JMX monitoring等等,那我们应该如 ...
- stark组件(2):提取公共视图函数、URL分发和设置别名
效果图: Handler类里处理的增删改查.路由分发.给URL设置别名等包括以后还要添加的很多功能,每一个数据库的类都需要,所以我们要把Handler提取成一个基类.提取成基类后,每一个数据表都可以继 ...
- linux下查找文件命令总结
主要有find,locate,whereis,which等 1. find是最常用也是最强大的查找命令,它可以查找任何类型的文件. find命令的一般格式为:find <指定目录>< ...
- 第 8 章: 模块, 包与分发---Word
第八章: 模块, 包 与 分发 描述: 大型Python程序以模块和包的形式组织.另外,Python标准库中包含大量模块.本章详细介绍模块和包系统.还将提供有关如何安装第三方模块和分发源代码的信息. ...
- 图学java基础篇之并发
概述 并发处理本身就是编程开发重点之一,同时内容也很繁杂,从底层指令处理到上层应用开发都要涉及,也是最容易出问题的地方.这块知识也是评价一个开发人员水平的重要指标,本人自认为现在也只是学其皮毛,因此本 ...
- 网络抢票黄牛,大部分是骗人的。公布一个骗钱黄牛,QQ:2233261390,QQ群:29443597,支付页面:https://me.alipay.com/q336
想着给女友买张回广州的回程火车票,抢了3天也没弄到.情急之下找了网络上所谓的黄牛.结果上当受骗.具体经过是这样的: 对方承诺抢到再付款.于是等他抢到后截图给我看,而且可以远程到他的机器去看,我也确实远 ...
- 二叉树遍历(Java实现)
二叉树遍历(Java实现) 主要是二叉树的遍历,包括递归遍历和非递归遍历 import java.util.ArrayDeque; import java.util.ArrayList; impo ...
- Couchbase II( View And Index)
Couchbase II( View And Index) Views view的作用是从没有结构和半结构的数据对象中抽取过滤需要的信息,并生成相关的index信息,通常生成json数据. vie ...