/// <summary>
/// 给指定的wodr文档的标签插入值
/// </summary>
/// <param name="builder"></param>
/// <param name="bookmark"></param>
/// <param name="strVal"></param>
private void SetBookmarkVal(DocumentBuilder builder, Bookmark bookmark, string strVal)
{
builder.InsertHyperlink(strVal, bookmark.Name, true);
}
/// <summary>
/// 修改单元格文本内容
/// </summary>
/// <param name="cell"></param>
/// <param name="str"></param>
/// <param name="bAdd">是否是往后加文本。否则的话是清空</param>
private void SetCellValue(Cell cell, string str, bool bAdd = false)
{
var nodes = cell.FirstParagraph.ChildNodes;
if (nodes.Count == 0)
{
var run = new Run(cell.Document, str);
cell.FirstParagraph.ChildNodes.Add(run);
return;
}
if (bAdd)
{
var run = nodes[nodes.Count - 1] as Run;
if (run == null)
{
return;
}
run.Text += "\r\n" + str;
return;
}
bool bSet = false;
nodes.ToArray().ToList().ForEach(node =>
{
var run = node as Run;
if (run == null)
{
return;
}
if (!bSet)
{
bSet = true;
run.Text = str;
return;
}
cell.FirstParagraph.ChildNodes.Remove(node);
});
}
/// <summary>
/// 获取表格的单元格
/// </summary>
/// <param name="table"></param>
/// <param name="nRow"></param>
/// <param name="nCol"></param>
/// <returns></returns>
Cell GetCell(Table table, int nRow, int nCol)
{
return table.Rows[nRow].Cells[nCol];
}
/// <summary>
/// 设置单元格图片
/// </summary>
/// <param name="builder"></param>
/// <param name="cell"></param>
/// <param name="strImage"></param>
private void SetCellImage(DocumentBuilder builder, Cell cell, string strImage)
{
var nodes = cell.FirstParagraph.ChildNodes;
if (nodes.Count == 0)
{
var shape = builder.InsertImage(strImage, 0, 0);
cell.FirstParagraph.ChildNodes.Add(shape);
return;
}
}
通过名称找到指定的标签,并给标签赋值:
var doc = comHelper.Open(fileName);
var builder = new DocumentBuilder(doc);
var body = doc.FirstSection.ChildNodes.ToArray().ToList()[0] as Body;
foreach (Bookmark bm in doc.Range.Bookmarks)
{//书签值得更改
builder.MoveToBookmark(bm.Name);
if (bm.Name == "TitleName")
{
SetBookmarkVal(builder, bm, "TitleName标签 666");
}
}
如果需要复制表格并放在新增的一页中:
var table = body.ChildNodes.ToArray().ToList().Last(p => p is Table) as Table;
//创建新的一页,
builder.MoveToDocumentEnd();
builder.InsertBreak(BreakType.PageBreak);
var newTable = table.Clone(true) as Table;//复制新表
body.ChildNodes.Add(newTable);
修改单元格内容:
SetCellValue(GetCell(table, 0, 0), "测试标题内容修改 测试1");
插入图片:
SetCellImage(builder, GetCell(table, 4, 0), @"D:\测试.png");
最后别忘了保存。