• aspose.words .net 导出word表


    需要word动态绘制表格。在网上找了些资料,觉得aspose.words还是挺方便的。

    把自己测试的代码贴出来有需要的可以看看

     aspose.words.dll

     1    using Aspose.Words;
     2 
     3   public void ExportWord()
     4         {
     5             string filePath = Server.MapPath("~/Template.doc");
     6             string filePath1 = Server.MapPath("~/Template1.doc");
     7             //预先生成数据
     8             List<Student> studentData = new List<Student>();
     9             for (int i = 0; i < 100; i++)
    10             {
    11                 studentData.Add(new Student()
    12                 {
    13                     name = "学生" + i.ToString("D3"),
    14                     schoolName = "某某中学",
    15                     num = i,
    16                     score = i
    17                 });
    18             }
    19             //加载word模板。
    20             Aspose.Words.Document doc = new Aspose.Words.Document(filePath);
    21             Aspose.Words.DocumentBuilder docWriter = new Aspose.Words.DocumentBuilder(doc);
    22 
    23             double[] colWidth = new double[] { 45, 60, 33, 55 };
    24             string[] colName = new string[] { "编号", "姓名", "分数", "学校" };
    25             int pageSize = 0;
    26             for (int i = 0, j = studentData.Count; i < j; i++)
    27             {
    28                 if (pageSize == 0)
    29                 {
    30                     //word页刚开始,一个表格的开始,要插入一个表头
    31                     docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
    32                     docWriter.StartTable();
    33                     AsposeCreateCell(docWriter, colWidth[0], colName[0]);
    34                     AsposeCreateCell(docWriter, colWidth[1], colName[1]);
    35                     AsposeCreateCell(docWriter, colWidth[2], colName[2]);
    36                     AsposeCreateCell(docWriter, colWidth[3], colName[3]);
    37                     docWriter.EndRow();
    38                 }
    39                 else if (pageSize == 30)//经过测算,每页word中可以放置30行
    40                 {
    41                     //结束第一个表格,插入分栏符号,并开始另一个表格
    42                     docWriter.EndTable();
    43                     docWriter.InsertBreak(Aspose.Words.BreakType.ColumnBreak);
    44                     docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
    45                     docWriter.StartTable();
    46                     AsposeCreateCell(docWriter, colWidth[0], colName[0]);
    47                     AsposeCreateCell(docWriter, colWidth[1], colName[1]);
    48                     AsposeCreateCell(docWriter, colWidth[2], colName[2]);
    49                     AsposeCreateCell(docWriter, colWidth[3], colName[3]);
    50                     docWriter.EndRow();
    51                 }
    52                 else if (pageSize == 60)//word分栏为2栏,那么一页word可以放60行数据
    53                 {
    54                     //一页word完毕,关闭表格,并绘制下一页的表头。
    55                     docWriter.EndTable();
    56                     docWriter.InsertBreak(Aspose.Words.BreakType.PageBreak);
    57                     docWriter.InsertBreak(Aspose.Words.BreakType.ParagraphBreak);
    58                     docWriter.StartTable();
    59                     AsposeCreateCell(docWriter, colWidth[0], colName[0]);
    60                     AsposeCreateCell(docWriter, colWidth[1], colName[1]);
    61                     AsposeCreateCell(docWriter, colWidth[2], colName[2]);
    62                     AsposeCreateCell(docWriter, colWidth[3], colName[3]);
    63                     docWriter.EndRow();
    64                     pageSize = 0;
    65                 }
    66                 pageSize++;
    67                 //创建内容
    68                 AsposeCreateCell(docWriter, colWidth[0], studentData[i].num.ToString());
    69                 AsposeCreateCell(docWriter, colWidth[1], studentData[i].name);
    70                 AsposeCreateCell(docWriter, colWidth[2], studentData[i].score.ToString());
    71                 AsposeCreateCell(docWriter, colWidth[3], studentData[i].schoolName);
    72                 docWriter.EndRow();
    73             }//end for
    74              //保存文件
    75             doc.Save(filePath1, Aspose.Words.SaveFormat.Doc);
    76 
    77 
    78         }
     1 public void AsposeCreateCell(Aspose.Words.DocumentBuilder builder, double width, string text)
     2         {
     3             
     4             builder.InsertCell();
     5             builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.Single;
     6             builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
     7             builder.CellFormat.Width = width;//单元格的宽度
     8             builder.CellFormat.LeftPadding = 3;//单元格的左内边距
     9             builder.CellFormat.RightPadding = 3;//单元格的右内边距
    10             builder.RowFormat.Height = 20;//行高
    11             builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
    12             builder.CellFormat.VerticalAlignment = Aspose.Words.Tables.CellVerticalAlignment.Center;//垂直居中对齐
    13             builder.ParagraphFormat.Alignment = Aspose.Words.ParagraphAlignment.Center;//水平居中对齐
    14             builder.Write(text);
    15         }

    合并单元格:

     1  public void MergeCell()
     2         {
     3             string filePath = Server.MapPath("~/Template.doc");
     4             string filePath1 = Server.MapPath("~/Template1.doc");
     5             Aspose.Words.Document doc = new Aspose.Words.Document(filePath);
     6             Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
     7             builder.InsertCell();
     8             builder.CellFormat.Borders.LineStyle = LineStyle.Single;
     9             builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
    10             //水平合并
    11             builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.First;
    12             //垂直合并
    13             //builder.CellFormat.HorizontalMerge= Aspose.Words.Tables.CellMerge.First;
    14             builder.Write("Text in merged cells.");
    15 
    16             builder.InsertCell();
    17             builder.CellFormat.Borders.LineStyle = LineStyle.Single;
    18             builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
    19             //builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.Previous;
    20             builder.Write("Text in one cell");
    21             builder.EndRow();
    22 
    23             builder.InsertCell();
    24             builder.CellFormat.Borders.LineStyle = LineStyle.Single;
    25             builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
    26             // 此单元格垂直合并到单元格上方,并应为空.
    27             builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.Previous;
    28             //builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
    29 
    30             builder.InsertCell();
    31             builder.CellFormat.Borders.LineStyle = LineStyle.Single;
    32             builder.CellFormat.Borders.Color = System.Drawing.Color.Black;
    33             builder.CellFormat.VerticalMerge = Aspose.Words.Tables.CellMerge.None;
    34             builder.CellFormat.HorizontalMerge = Aspose.Words.Tables.CellMerge.None;
    35             builder.Write("Text in another cell");
    36             builder.EndRow();
    37             doc.Save(filePath1, Aspose.Words.SaveFormat.Doc);
    38         }
  • 相关阅读:
    024 其它 关联映射
    023 复合主键 关联映射
    022 component(组件)关联映射
    020 <one-to-one>、<many-to-one>单端关联上的lazy(懒加载)属性
    019 关联映射文件中集合标签中的lazy(懒加载)属性
    018 关联映射文件中<class>标签中的lazy(懒加载)属性
    017 多对多关联映射 双向(many-to-many)
    016 多对多关联映射 单向(many-to-many)
    015 一对多关联映射 双向(one-to-many)
    014 一对多关联映射 单向(one-to-many)
  • 原文地址:https://www.cnblogs.com/abc101/p/5264280.html
Copyright © 2020-2023  润新知