ASP.NET根据Aspose及BarcodeLib进行Word编辑

最近在做一个项目,要求将内容自动写入到word中,涉及条码,表格等方式。下面我们来讲结一下

1.创建条码

网上下载BarcodeLib.dll,aspose,随后会附上百度云盘下载路径,或者联系我QQ546170667

2.项目中引用

3.开始处理,可以将文件保存成图片,也可以保存成流的方式。一开我保存为图片,后来优化了一下,采用流的方式,各有利弊。

 1 /// <summary>
 2         ///生成图片,返回流
 3         /// </summary>
 4         /// <param name="height"></param>
 5         /// <param name="width"></param>
 6         /// <param name="type"></param>
 7         /// <param name="code">二维码</param>
 8         /// <param name="image"></param>
 9         /// <returns></returns>
10         public static byte[] GetBarcode_byte(int height, int width, BarcodeLib.TYPE type,
11                                            string code)
12         {
13             System.Drawing.Image image = null;
14             BarcodeLib.Barcode b = new BarcodeLib.Barcode( );
15             b.BackColor = System.Drawing.Color.White;
16             b.ForeColor = System.Drawing.Color.Black;
17             b.IncludeLabel = true;
18             b.Alignment = BarcodeLib.AlignmentPositions.CENTER;
19             b.LabelPosition = BarcodeLib.LabelPositions.BOTTOMCENTER;
20             b.ImageFormat = System.Drawing.Imaging.ImageFormat.Png;
21             System.Drawing.Font font = new System.Drawing.Font("verdana", 10f);
22             b.LabelFont = font;
23 
24             b.Height = height;
25             b.Width = width;
26 
27             image = b.Encode(type, code);//生成图片
28             //image.Save(file_path, System.Drawing.Imaging.ImageFormat.Png);//如果要存为图片,取消注释
29             byte[] buffer = b.GetImageData(SaveTypes.PNG);
30             return buffer;
31         }
4.开始用aspose对word进行编辑
4.1思路:先创建文档模板,采用标签的方式进行占位,程序再读取标签,替换,生成文件
4.2先创建word,制作好格式,在要写入内容的地方,插入标签,具体百度查一下,大把的。
4.3开始书写代操作代码
引入以下

using Aspose.Words;
using Aspose.Words.Tables;

  1 /// <summary>
  2         /// 编辑文档
  3         /// </summary>
  4 
  5         public static void Edit_The_Document(string file_path, string title, string debtors, string linkman, string tel, string barcode, string datetime, string code, string name, string type, string remark, string handled, string assessing)
  6         {
  7             string tempFile = Path.GetFullPath(file_path).ToString( );//获取模板路径,这个根据个人模板路径而定。
  8             Aspose.Words.Document doc = new Aspose.Words.Document(tempFile);
  9             DocumentBuilder builder = new DocumentBuilder(doc);//操作word
 10             Dictionary<string, string> dic = new Dictionary<string, string>( ); //创建键值对   第一个string 为书签名称 第二个string为要填充的数据
 11             if (!string.IsNullOrWhiteSpace(title))
 12             {
 13                 dic.Add("title", title);
 14             }
 15             if (!string.IsNullOrEmpty(debtors))
 16             {
 17                 dic.Add("debtors", debtors);
 18             }
 19             if (!string.IsNullOrEmpty(linkman))
 20             {
 21                 dic.Add("linkman", linkman);
 22             }
 23             if (!string.IsNullOrEmpty(tel))
 24             {
 25                 dic.Add("tel", tel);
 26             }
 27             if (!string.IsNullOrWhiteSpace(barcode))
 28             {
 29                 dic.Add("barcode", barcode);
 30             }
 31             if (!string.IsNullOrEmpty(datetime))
 32             {
 33                 dic.Add("datetime", datetime);
 34             }
 35             if (!string.IsNullOrWhiteSpace(code))
 36             {
 37                 dic.Add("code", code);
 38             }
 39             if (!string.IsNullOrEmpty(name))
 40             {
 41                 dic.Add("name", linkman);
 42             }
 43 
 44             if (!string.IsNullOrEmpty(type))
 45             {
 46                 dic.Add("type", type);
 47             }
 48             if (!string.IsNullOrEmpty(remark))
 49             {
 50                 dic.Add("remark", remark);
 51             }
 52             if (!string.IsNullOrEmpty(handled))
 53             {
 54                 dic.Add("handled", handled);
 55             }
 56             if (!string.IsNullOrEmpty(assessing))
 57             {
 58                 dic.Add("assessing", assessing);
 59             }
 60             /*
 61             DataTable nameList = new DataTable( );
 62             nameList.Columns.Add("借方");
 63             nameList.Columns.Add("条码");
 64             nameList.Columns.Add("样品名称");
 65             nameList.Columns.Add("规格型号");
 66             nameList.Columns.Add("单位");
 67             nameList.Columns.Add("数量");
 68             nameList.Columns.Add("备注");
 69             builder.Font.Name = "Code39AzaleaRegular2";
 70 
 71             DataRow row = null;
 72             for (int i = 0; i < 3; i++)
 73             {
 74                 row = nameList.NewRow( );
 75                 row["编号"] = i.ToString( ).PadLeft(4, '0');
 76 
 77                 row["条码"] = "6935965525074";
 78                 row["样品名称"] = "Aa" + i.ToString( );
 79                 row["规格型号"] = "Aa";
 80                 row["单位"] = "台";
 81                 row["数量"] = i.ToString( );
 82                 row["备注"] = "";
 83 
 84                 nameList.Rows.Add(row);
 85             }
 86 
 87             List<double> widthList = new List<double>( );
 88             for (int i = 0; i < nameList.Columns.Count; i++)
 89             {
 90                 builder.MoveToCell(0, 0, i, 0); //移动单元格
 91                 double width = builder.CellFormat.Width;//获取单元格宽度
 92                 widthList.Add(width);
 93             }
 94 
 95             builder.MoveToBookmark("table");        //找到标签开始添加值
 96 
 97             for (var i = 0; i < nameList.Rows.Count; i++)
 98             {
 99                 for (var j = 0; j < nameList.Columns.Count; j++)
100                 {
101                     builder.InsertCell( );// 添加一个单元格
102                     builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.Single;
103                     builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
104                     builder.CellFormat.Width = widthList[j];
105                     builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
106                     builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;//垂直居中对齐
107                     builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;//水平居中对齐
108                 }
109                 builder.EndRow( );
110             }*/
111 
112             foreach (var key in dic.Keys)//循环键值对
113             {
114                 switch (key)
115                 {
116                     case "barcode":
117 
118                         builder.MoveToBookmark(key); //将光标移入书签的位置
119                         string image = string.Empty;
120 
121                         builder.InsertImage(Utility.clsBarCode.GetBarcode_byte(60, 260, BarcodeLib.TYPE.CODE128, dic[key]));
122 
123                         break;
124 
125                     default:
126                         builder.MoveToBookmark(key); //将光标移入书签的位置
127                         builder.Write(dic[key]);//填充值
128                         break;
129                 }
130             }
131 
132             doc.Save(file_path);//保存word
133         }
View Code

*其中注释的代码是表格,我这里没有用到表格,所以注释掉。表格很简单,只用创建表头,然后回车,表头下方插入标记即可

*以上代码具于网上整合,非本人原创,只做了部分修改。

 

转载于:https://www.cnblogs.com/c546170667/articles/10303370.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值