利用API接口调用方法实现导出表格word并从数据库中调用数据赋值到表格中
下面是我刚学习遇到的一些常见知识点代码(优先展现一下表格的结构)
先观看一下初始化的方法 (主要看代码内容的意思)
public bool ReportYjForm(Dictionary<string, string> dic, Stream stream)
{
//创建一个模板 就是随便新建一个docx文件
string rote = @"C:\Users\DN\Desktop\word\"; //自己docx文件地址
string orginPath = rote + "现场问题.docx"; //文件名字
//需要利用builder去实现表格 实例化以下两行代码
Document doc = new Document(orginPath); //参数是文件地址
DocumentBuilder builder = new DocumentBuilder(doc);
//如果报错红线查一下是否安装nuget包 Aspose.words
//没有安装则装一下
}
接着以上方法,下面就遇到自己常见的知识点,创建行列,合并单元格,设置宽度等
//表格基本就是行和列
//但是在你创建的时候只有一个一个表格的创建 看下面这样行代码
builder.InsertCell(); //创建了一个表格
//如果直接继续创建的话 比如三个表格
builder.InsertCell();
builder.InsertCell();//又添加了两个
//这时候效果就是三个表格并列 可以理解成第一行有三个格子,如果想到第二行的话
builder.EndRow(); //结束 endrow 方法名字中就体现了end
//d第一行结束后紧接着第二行 则就继续添加
builder.InsertCell();
builder.InsertCell();
builder.InsertCell();
//这时候就形成了两行三列的表格
上述代码已经形成了一个两行三列的表格,这个理解了就准备给表格中添加内容
非常简单每次添加一格的时候 调用方法 builder.Write(“书写内容”);
请看主要代码
string rote = @"C:\Users\DN\Desktop\word\";
string orginPath = rote + "现场问题.docx";
Document doc = new Document(orginPath);
DocumentBuilder builder = new DocumentBuilder(doc);
builder.InsertCell();
builder.Write("我是第一行第一格");
builder.InsertCell();
builder.Write("我是第一行第二格");
builder.InsertCell();
builder.Write("我是第一行第三格");
builder.EndRow();
builder.InsertCell();
builder.Write("我是第二行第一格");
builder.InsertCell();
builder.Write("我是第二行第二格");
builder.InsertCell();
builder.Write("我是第二行第三格");
效果图
我是第一行第一格 | 我是第一行第二格 | 我是第一行第三格 |
我是第二行第一格 | 我是第二行第二格 | 我是第二行第三格 |
然后就是常见的合并单元格
VerticalMerge单词意思是:垂直合并,纵向合并
HorizontalMerge意思是:横向合并
如果是新手不要想太多直接拿来用意思很明显了,其次就是后面的参数CellMerge.后面跟的有三个分别是:None(不合并,不用动),First(合并这一格),Previous(接应需要合并的地方);"下面细讲"
builder.CellFormat.VerticalMerge = CellMerge.None; //纵向不合并
builder.CellFormat.HorizontalMerge = CellMerge.None; //横向不合并
这两行就是无论横向还是纵向都不合并。如果都不合并的话 还用不用写了呢,肯定不用写了,但是作为新手我觉得找到代码的兴趣就写上去,更直观,给自己内心找个理由更规范。
进入正题:假设我只需要合并第一列的话怎么实现(对比上面表格的代码)
builder.InsertCell();
//既然选择合并第一列,就是合并第一行第一格和第二行第一格 添加条件合并
builder.CellFormat.VerticalMerge = CellMerge.First; //纵向合并
builder.CellFormat.HorizontalMerge = CellMerge.None; //横向不合并
builder.Write("我是第一行第一格")
builder.InsertCell();
builder.Write("我是第一行第二格");
builder.InsertCell();
builder.Write("我是第一行第三格");
builder.EndRow();
builder.InsertCell();//既然选择合并第一列,就是合并第一行第一格和第二行第一格
builder.CellFormat.VerticalMerge = CellMerge.Previous; //纵向合并
builder.CellFormat.HorizontalMerge = CellMerge.None; //横向不合并//解释一下,因为本格是需要合并给第一行第一格的所以需要贡献出去,就用Previous
builder.Write("我是第二行第一格");
builder.InsertCell();
builder.Write("我是第二行第二格");
builder.InsertCell();
builder.Write("我是第二行第三格");
就是这个合并,可能不太清楚,感觉没必要填颜色。
到这里就合并好了,如果能够耐心看到这里非常好,里面看似混乱其实东西就那两句话,我想就合并这一个纵向的列就可以了,假设这个可以完成,那么剩下的合并横向,还有纵向横向交错,这个我建议创建前先自己手动创建表格,手动思路清楚之后带入代码,非常方便的技巧 。
写到这里有点累了,如果有兴趣有基础的可以试试,不过感觉应该新手还是一头雾水。我下个文章写一下超详细的从API调用到方法的实现。目前我就写了一下合并列的单元格,但是呢代码这个需要自己的摸索,我只是看不惯过度让自己领悟的,放了一堆代码附带一个效果图我真不知道怎么去理解,我是一个一个试出来的,真正新手用的时候谁那么有时间一个一个试出来。后续还会有API爬虫的知识,可能会稍微不容易理解但是逻辑是非常清晰的。