有没有人知道打开word文档模板并通过C#编程填充表格的好方法?
答案 0 :(得分:3)
如果是我,这就是我要用的东西
答案 1 :(得分:2)
最佳选择(至少是docx格式)是 http://docx.codeplex.com/
在下面的博文中,您可以找到代码示例,将非常简单的文档操作与DocX,Microsoft的OOXML API和经典的Office Interop库进行比较: http://cathalscorner.blogspot.com/2010/06/cathal-why-did-you-create-docx.html
答案 2 :(得分:0)
如果您对商业产品感兴趣并使用DOCX文件格式,则可以试用我们的GemBox.Document组件。
它有自己的读/写引擎和简单的内容模型,可以在没有安装MS Word的情况下使用。
以下是一个C#代码示例,该代码如何创建一个简单的模板文档,该表格将使用邮件合并功能扩展数据:
// Use the component in free mode.
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Define DataTable with two columns: 'Name' and 'Surname', and fill it with some data.
// You don't have to do this if you already have a DataTable instance.
var dataTable = new DataTable("People")
{
Columns =
{
new DataColumn("Name", typeof(string)),
new DataColumn("Surname", typeof(string))
},
Rows =
{
new object[] { "John", "Doe" },
new object[] { "Fred", "Nurk" },
new object[] { "Hans", "Meier" },
new object[] { "Ivan", "Horvat" }
}
};
// Create and save a template document.
// You don't have to do this if you already have a template document.
// This code is only provided as a reference how template document should look like.
var document = new DocumentModel();
document.Sections.Add(
new Section(document,
new Table(document,
new TableRow(document,
new TableCell(document,
new Paragraph(document, "Name")),
new TableCell(document,
new Paragraph(document, "Surname"))),
new TableRow(document,
new TableCell(document,
new Paragraph(document,
new Field(document, FieldType.MergeField, "RangeStart:People"),
new Field(document, FieldType.MergeField, "Name"))),
new TableCell(document,
new Paragraph(document,
new Field(document, FieldType.MergeField, "Surname"),
new Field(document, FieldType.MergeField, "RangeEnd:People")))))));
document.Save("TemplateDocument.docx", SaveOptions.DocxDefault);
// Load a template document.
document = DocumentModel.Load("TemplateDocument.docx", LoadOptions.DocxDefault);
// Mail merge template document with DataTable.
// Important: DataTable.TableName and RangeStart/RangeEnd merge field names must match.
document.MailMerge.ExecuteRange(dataTable);
// Save the mail merged document.
document.Save("Document.docx", SaveOptions.DocxDefault);