c#用Aspose.word读写word表格中某个单元格

发布时间:2019-04-04编辑:佚名阅读(2549)

用Aspose.word来读写word文档方便快捷,比c#自带的读写word文档的类库好用很多,网上很多都是循环给单元格赋值,这里我给出改写或直接给某个单元格赋值的方法:

1、引用Aspose.Words.dll

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

(ps:有的时候即使添加了引用Aspose.Words.dll,也添加了using引用,但是运行时他依旧会报错,说缺少using引用,出现这个问题的时候右键项目的属性,将目标框架改为 .NET Frameword4 问题就解决了)

2、获取到word中的表格:

//打开word文档,fileName是路径地址,需要扩展名
Aspose.Words.Document doc = new Document(fileName);
//获取word文档中的第一个表格
var table0 = doc.GetChildNodes(NodeType.Table, true)[0] as Aspose.Words.Tables.Table;

3、给某个单元格赋值

//获取table中的某个单元格,从0开始
Cell lshCell = table0.Rows[13].Cells[1];
//将单元格中的第一个段落移除
lshCell.FirstParagraph.Remove();
//新建一个段落
Paragraph p = new Paragraph(doc);
//设置一个string的值
string value = "新建一个string的值";
//把设置的值赋给之前新建的段落
p.AppendChild(new Run(doc, value));
//将此段落加到单元格内
lshCell.AppendChild(p);

4、保存word文档

doc.Save(fileName);//fieName为文件保存路径地址,需要扩展名

从上代码中可以看到,改写某个单元格的值的时候,和c#自带类库的用法不同,不能直接改写,要先获取单元格内的段落,移除后再用段落进行赋值。

二、Aspose.word读取word表格中某个单元格的值

之前在网上一直没看到有什么合适的Aspose.word读取word表格中某个单元格内的值的方法,不知道是我没找到还是网上真的很少,总之我在这里给出一个方法,如下:

1、同样要先打开word文档并获取表格

//打开word文档,fileName是路径地址,需要扩展名
Aspose.Words.Document doc = new Document(fileName);
//获取word文档中的第一个表格
var table0 = doc.GetChildNodes(NodeType.Table, true)[0] as Aspose.Words.Tables.Table;

2、获取具体的某个单元格并获取其中的值

Cell cell = table0.Rows[3].Cells[1];
//用GetText()的方法来获取cell中的值
string cbfbm = cell.GetText();
cbfbm = cbfbm.Replace("\a", "");
cbfbm = cbfbm.Replace("\r", "");

其中,我有用到一个Replace()方法,这是因为在调试的时候我发现读取出单元格内的数据时经常在末尾会出现'\a'或者'\r'又或者'\t'的情况,使用了Trim()函数好像也没什么用,所以干脆用Replace()直接把'\a''\r''\t'都替换成空,这样就可以除去末尾的某些不必要的字符了。


  关键字:c#Aspose.word读写word表格单元格


鼓掌

1

正能量

0

3

呵呵

0


评论区