【发布时间】:2017-07-20 12:49:21
【问题描述】:
我正在使用TemplateEngine.Docx,用于生成Word docx的模板引擎
我正在尝试将 DataTable 结果映射到 Word 文档表,下面的代码 sn-p 是通过硬编码来实现的
var valuesToFill = new Content(
// Add table.
new TableContent("Team Members Table")
.AddRow(
new FieldContent("Name", "Eric"),
new FieldContent("Role", "Program Manager"))
.AddRow(
new FieldContent("Name", "Bob"),
new FieldContent("Role", "Developer")),
// Add field inside table that not to propagate.
new FieldContent("Count", "2")
);
我尝试了下面的代码,但我无法弄清楚,
DataTable dt = new DataTable();
dt.Clear();
dt.Columns.Add("SOE_DT");
dt.Columns.Add("SOE_TM");
dt.Columns.Add("SOE_EV");
dt.Rows.Add(new object[] { "19/07/2017", "16:00", "This is First Event" });
dt.Rows.Add(new object[] { "19/07/2017", "16:30", "This is Second Event" });
dt.Rows.Add(new object[] { "19/07/2017", "17:00", "This is Third Event" });
dt.Rows.Add(new object[] { "19/07/2017", "18:00", "This is Fourth Event" });
TableContent tblSEQOfEvents = new TableContent("SEQOfEvents");
foreach (DataRow dtRow in dt.Rows)
{
//I Need to Add here tblSEQOfEvents.AddRow
foreach (DataColumn dc in dt.Columns)
{
tblSEQOfEvents.AddRow(
new FieldContent(dc.ColumnName, dtRow[dc].ToString()
));
}
}
结果显示在图像中。我知道,因为对于每个列循环,它循环 12 次而不是 4 次,如果有人帮助我纠正它,我只会显示剪断。 谢谢
更新 1
by This Stackoverflow Q/A 我可以通过以下代码完成它,是正确的方法还是我可以改进?
foreach (DataRow dtRow in dt.Rows)
{
string SOE_DT = dtRow["SOE_DT"].ToString();
string SOE_TM = dtRow["SOE_TM"].ToString();
string SOE_EV = dtRow["SOE_EV"].ToString();
tblSEQOfEvents.AddRow(
new FieldContent("SOE_DT", SOE_DT),
new FieldContent("SOE_TM", SOE_TM),
new FieldContent("SOE_EV", SOE_EV)
);
}
【问题讨论】:
-
你问的问题是什么?你想达到什么目的?我看到“我正在尝试将 DataTable 结果映射到 Word 文档表”,但这实际上并没有告诉我们您正在寻找什么结果。尝试包含一个您期望的结果示例。
-
感谢 cmets,第一个代码 sn-p 显示了如何使用模板在 Word 文档中设置表的值,我提到了我正在使用的 URL,即github.com/UNIT6-open/TemplateEngine.Docx 我希望手动编码通过使用 c# .Net DataTable 来完成,我展示了我使用的代码以及 Result Desired 结果的图片只显示了四行,因为示例数据表有四行
标签: c#