OpenXML 将行附加到 Word 中的现有 table
OpenXML append rows to an existing table in Word
我想将行附加到只有 header 行的现有 table。我使用 OpenXML,但由于错误 0x80004005,我无法打开 Word 文档。
这是我认为不错的来源,但是...:[=13=]
public static byte[] WordDocument(List<List<string>> data)
{
using (MemoryStream mem = new MemoryStream())
{
byte[] byteArray = File.ReadAllBytes(templatePath);
mem.Write(byteArray, 0, (int)byteArray.Length);
using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(mem, true))
{
Table table = wordDocument.MainDocumentPart.Document.Body.Elements<Table>().First();
foreach (var line in data)
{
TableRow tr = new TableRow();
foreach (var column in line)
{
TableCell tc = new TableCell(new Paragraph(new Run(new Text(column))));
tr.Append(tc);
}
table.Append(new TableRow());
}
}
return mem.ToArray();
}
}
document.xml:
PasteBin
写入后倒回流。出于兴趣,为什么还要使用流,而不是直接从文档加载?
不应该是table.Append(tr);
而不是table.Append(new TableRow());
吗?
我想将行附加到只有 header 行的现有 table。我使用 OpenXML,但由于错误 0x80004005,我无法打开 Word 文档。 这是我认为不错的来源,但是...:[=13=]
public static byte[] WordDocument(List<List<string>> data)
{
using (MemoryStream mem = new MemoryStream())
{
byte[] byteArray = File.ReadAllBytes(templatePath);
mem.Write(byteArray, 0, (int)byteArray.Length);
using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(mem, true))
{
Table table = wordDocument.MainDocumentPart.Document.Body.Elements<Table>().First();
foreach (var line in data)
{
TableRow tr = new TableRow();
foreach (var column in line)
{
TableCell tc = new TableCell(new Paragraph(new Run(new Text(column))));
tr.Append(tc);
}
table.Append(new TableRow());
}
}
return mem.ToArray();
}
}
document.xml: PasteBin
写入后倒回流。出于兴趣,为什么还要使用流,而不是直接从文档加载?
不应该是table.Append(tr);
而不是table.Append(new TableRow());
吗?