博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用xslt导出复杂样式的excel,支持多个worksheet
阅读量:4881 次
发布时间:2019-06-11

本文共 4241 字,大约阅读时间需要 14 分钟。

在项目里新建文件XsltHeader.txt,该文件保存excel的通用样式,我们可以理解为excel的css文件。

打开excel,编辑好各个worksheet复杂样式的excel,然后另存为"XML 电子表格 "的XML格式,名称为book.xml。
用记事本打开刚才后另存的xml文件,可以看到excel自动生成的xml格式,这里我们把样式和数据部分进行分开,以偏复用。

剪切book.xml第一行到"</Style>"标签,把内容粘贴到XsltHeader.txt文件,保存txt文件,这样就建好excel的格式文件了,后面可以用到这些格式。

XsltHeader.txt:

Kevin
Ke boxun
2013-09-26T03:08:53Z
2013-09-26T03:16:59Z
xxxx
12.00
12090
19200
0
75
False
False
View Code

 

去掉book.xml多余的代码,只保留WorkSheet之间的内容。

进一步修改book.xml,在头和尾加上xslt语法,使之成为excel模板,

更改book.xml为book.xslt,这样就建好了,最后xslt格式如下:

名称
代码
名称
日期
View Code

 

页面导出:

DataSet ds = tb.GetPageData(windcode, startdate, market); ExportHelper.exportDataSet(ds, "PeriodDiff", "Book导出测试", this); ds包含两个datatable,每一个为一个worksheet对应的datatable,DataSet名称为"DsBrief",两个DataTable为"TradeBrief","StandardContact"  public static void exportDataSet(DataSet ds, string xsltName,string cnName, System.Web.UI.Page page)        {            MemoryStream dataStream = new MemoryStream();            ds.Namespace = "";            ds.WriteXml(dataStream);            doExport(dataStream, xsltName, cnName, page);        }        public static void doExport(Stream dataStream, string xsltName, string cnName, System.Web.UI.Page page)        {            MemoryStream outStream = new MemoryStream();            dataStream.Position = 0;            XmlReader reader = XmlReader.Create(dataStream);            XslCompiledTransform xTrans = new XslCompiledTransform();            xTrans.Load(ExportHelper.xsltFilePath + "\\" + xsltName + ".xslt");            xTrans.Transform(reader, null, outStream);            outStream.Position = 0;            StreamReader srContent = null;            StreamReader srHeader = null;            try            {                srContent = new StreamReader(outStream, System.Text.Encoding.UTF8);                srHeader = new StreamReader(ExportHelper.xsltFilePath + "\\XsltHeader.txt", System.Text.Encoding.UTF8);                page.Response.Clear();                string fileName = page.Server.UrlEncode(cnName) + DateTime.Now.Date.ToString(ExportHelper.DefaultDateTimeFormat) + ".xls";                page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);                page.Response.ContentType = "application/vnd.ms-excel";                page.Response.ContentEncoding = System.Text.Encoding.UTF8;                page.Response.Charset = "gb2312";                page.Response.Write(srHeader.ReadToEnd() + srContent.ReadToEnd() + "");                page.Response.End();            }            catch (Exception ex)            {                throw ex;            }            finally            {                if (srContent != null)                {                    try                    {                        srContent.Close();                    }                    catch { }                }                if (srHeader != null)                {                    try                    {                        srHeader.Close();                    }                    catch { }                }            }        }
View Code

 

转载于:https://www.cnblogs.com/kevinke/p/3346864.html

你可能感兴趣的文章
node-sass 报错的解决方法
查看>>
Python:GeoJson格式的多边形裁剪Tiff影像并计算栅格数值
查看>>
免费下载知网文献的方法 | sci-hub免费下载SCI论文方法
查看>>
测试用例,变量之间,相互调用的方法,和修改原来初始化变量的方法
查看>>
ASP.NET MVC中将控制器分离到类库的实现(转)
查看>>
Poj 2304 Combination Lock(模拟顺、逆时钟开组合锁)
查看>>
Palindrome Number
查看>>
H5上传功能
查看>>
PHP命名空间(Namespace)的使用详解
查看>>
java项目@override报错问题
查看>>
DataTable 和Json 字符串互转
查看>>
Django中Template does not exit
查看>>
Redis安装 java中的连接 序列化 反序列化
查看>>
hdu 1896 优先队列的应用
查看>>
递推和迭代的比较
查看>>
OpenGL 头文件,库文件
查看>>
点与不规则图形关系判断
查看>>
linux不开启图形界面
查看>>
菜鸟学习SSH(二)——Struts国际化
查看>>
iOS 自定义控件--重写一些方法
查看>>