【发布时间】:2019-12-31 05:00:32
【问题描述】:
我试图从控制器填充 .docx 文件中的 2 个表。填充第一个表没有问题。但我似乎找不到填充第二个的方法。 这是我的控制器代码。
using (WordprocessingDocument sourceDoc = WordprocessingDocument.Open(Server.MapPath("~/doc/temp.docx"), false))
using (var resultDoc = WordprocessingDocument.Create(stream, DocumentFormat.OpenXml.WordprocessingDocumentType.Document, true))
{
//Declare a TABLE class(This will get you first table of docx)
Table table = body.Elements<Table>().First();
//Accessing 1st row of the table
TableRow row = table.Elements<TableRow>().ElementAt(0);
//Accessing 2nd cell of that row
TableCell cell = row.Elements<TableCell>().ElementAt(0);
Paragraph p = cell.Elements<Paragraph>().First();
Run r = p.Elements<Run>().First();
Text text1 = r.Elements<Text>().First();
//replacing text in that CELL
text1.Text = text1.Text.Replace("xTitlex", "Title");
//Accessing 2nd ROW of That table
row = table.Elements<TableRow>().ElementAt(1);
//Accessing 2nd CELL of that row
cell = row.Elements<TableCell>().ElementAt(1);
p = cell.Elements<Paragraph>().First();
r = p.Elements<Run>().First();
text1 = r.Elements<Text>().First();
//Replacing text in that CELL
text1.Text = text1.Text.Replace("xVal1x", "Item1");
//This dont seem to work
//Declare a 2nd TABLE class(This will get you second table of docx)
Table table2 = body.Elements<Table>().Last();
TableRow row2 = table2.Elements<TableRow>().ElementAt(0);
////Accessing 2nd cell of that row
TableCell cell2 = row2.Elements<TableCell>().ElementAt(1);
Paragraph p2 = cell.Elements<Paragraph>().Last();
Run r2 = p.Elements<Run>().Last();
Text text12 = r.Elements<Text>().Last();
////replacing text in that CELL
text12.Text = text1.Text.Replace("xVal2x", "Item2");
}
stream.Seek(0, SeekOrigin.Begin);
【问题讨论】:
标签: c# model-view-controller ms-word openxml openxml-sdk