码迷,mamicode.com
首页 > 其他好文 > 详细

npoi导出word2007辅助类

时间:2015-08-06 15:08:49      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:npoi   word   word2007   导出   

下载npoi2.0
npoi下载地址:点击打开链接
word模板基于word2007及以上。
模板
技术分享
最终效果
技术分享

段落替换
1、打开word模板
            word.openWord(context.Server.MapPath(@"~/test/wordhelper/template/模板.docx"));
2、段落替换
 Dictionary<string, object> d = new Dictionary<string, object>();
            //段落
            d = new Dictionary<string, object>();
            d.Add("no", DateTime.Now.ToString());
            word.setCellValueParagraphs(d);
表格内单元格部分文本替换
            //表格内单元格局部替换
            d = new Dictionary<string, object>();
            d.Add("tableusername", "郑州张三");
            word.setCellValuetTables(d, 0);
技术分享
此功能主要用在将单元格部分替换。例如模板单元格内容为:“姓名:tableusername”,仅仅替换tableusername
注意:此处尚有BUG,占位符如果不能被npoi解析为一个run单元的话,程序会找不到这个占位符 。例如tableusername可能会被解析成table+user+name 3个run
最后一个参数是表格索引,你可以通过word.tables()得到word模板中的所有表格
表格内单元格全文本替换
 //表格内单元格全替换
            d = new Dictionary<string, object>();
            d.Add("#tableuserid$", "001");
            d.Add("#tableusername$", "郑州张三");
            d.Add("#img$", "$img{" + context.Server.MapPath(@"~/test/wordhelper/猫.jpg") + "}(5000000,5000000)"); //插入图片(宽,高)
            word.setCellValuetTables1(d, 1);
技术分享
此功能会替换整个单元格的值。因此要求单元格内的只能有占位符,不能留其他文本。同时将占位符加上#占位符$,以保证单元格占位符的唯一性和可读性

表格内插入图片
 d.Add("#img$", "$img{" + context.Server.MapPath(@"~/test/wordhelper/猫.jpg") + "}(5000000,5000000)"); //插入图片(宽,高)
            word.setCellValuetTables1(d, 1);
插入图片的占位符可以同表格操作一块使用。
参数说明:$img{图片绝对位置}(宽,高)。$img{}用以标示此处是图片操作

表格循环插入多行


技术分享
最终效果
技术分享
 //循环表格
            DataSet ds_table = new DataSet();
            DataTable dt_table = new DataTable();
            dt_table.Columns.Add("itemid");
            dt_table.Columns.Add("itemname");
            for (int i = 0; i < 5; i++)
            {
                DataRow dr = dt_table.NewRow();
                dr["itemid"] = i.ToString();
                dr["itemname"] = i.ToString() + "name";
                dt_table.Rows.Add(dr);
            }
            ds_table.Tables.Add(dt_table);
            word.setCellValuetTables(ds_table, 1, word.tables[2]);

类似于excel,多行循环将dataset中的记录插入table,dataset中列的顺序可以和模板的列顺序不一致,程序会根据名称自动匹配对应列。

示例下载


版权声明:本文为博主原创文章,未经博主允许不得转载。

npoi导出word2007辅助类

标签:npoi   word   word2007   导出   

原文地址:http://blog.csdn.net/wynan830/article/details/47313683

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!