- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试将数据表导出到 excel 表,但现在我想将数据表导出到 word 表。
我有一个包含 excel 嵌入对象的 word 模板文件,我想使用数据表填充该对象。这是我一直用来将自定义值导出到 word 文件的代码。
Object oMissing = System.Reflection.Missing.Value;
Object oTemplatePath = "D:\\Mujahid.dotx";
Application wordApp = new Application();
Document wordDoc = new Document();
wordDoc = wordApp.Documents.Add(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing);
foreach (Field myMergeField in wordDoc.Fields)
{
Range rngFieldCode = myMergeField.Code;
String fieldText = rngFieldCode.Text;
// ONLY GETTING THE MAILMERGE FIELDS
if (fieldText.StartsWith(" MERGEFIELD"))
{
// THE TEXT COMES IN THE FORMAT OF
// MERGEFIELD MyFieldName \\* MERGEFORMAT
// THIS HAS TO BE EDITED TO GET ONLY THE FIELDNAME "MyFieldName"
Int32 endMerge = fieldText.IndexOf("\\");
Int32 fieldNameLength = fieldText.Length - endMerge;
String fieldName = fieldText.Substring(11, endMerge - 11);
// GIVES THE FIELDNAMES AS THE USER HAD ENTERED IN .dot FILE
fieldName = fieldName.Trim();
// **** FIELD REPLACEMENT IMPLEMENTATION GOES HERE ****//
// THE PROGRAMMER CAN HAVE HIS OWN IMPLEMENTATIONS HERE
if (fieldName == "SaleID")
{
myMergeField.Select();
wordApp.Selection.TypeText("12345667890");
}
else if (fieldName == "date")
{
myMergeField.Select();
wordApp.Selection.TypeText(DateTime.Today.ToShortDateString());
}
else if (fieldName == "CustName")
{
myMergeField.Select();
wordApp.Selection.TypeText("Mujahid Niaz");
}
else if (fieldName == "CustAddress")
{
myMergeField.Select();
wordApp.Selection.TypeText("House No 113 Street 8B Bilal Colony Shamasabad Rawalpindi");
}
else if (fieldName == "CustContact")
{
myMergeField.Select();
wordApp.Selection.TypeText("03137203842");
}
}
}
SqlConnection conn= new SqlConnection(@"Data Source=(localdb)\Projects;Initial Catalog=SpareParts;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False");
conn.Open();
SqlDataAdapter adp = new SqlDataAdapter("Select* from Items", conn);
DataSet ds = new DataSet();
adp.Fill(ds);
CreateWordTableWithDataTable(ds.Tables[0]);
wordDoc.Merge("D:\\M.xlsx");
wordDoc.SaveAs("myfile.doc");
wordApp.Documents.Open("myFile.doc");
最佳答案
您可以使用几种方法来执行此操作。最简单的方法是在word文档中创建一个表格并为每个单元格分配字段。但是,通过这种方式,您必须固定表格中行数和列数的大小。
还有另外两种方便的方法可以使用它。
使用 C#.NET
这是从代码动态创建表的最简单方法。但是,应用程序一旦编译就不能直接更改,而且当应用程序在客户端运行时也很难调试。
How to create table programatically
使用 VBA
This method is little bit hard and complex but, once you done it you can easily manage the document at client side without re-compiling your C# application.
在您的 C# 应用程序中写下将数据导出为 csv 格式并存储在文档所在位置的代码。 ( How to export datatable into csv file format. )
在您的文档中创建一个从 csv 文件读取数据并创建表格的宏。 ( Add Table and fill data to the Word document from the csv. )
最后一步是从 C# 应用程序执行宏。 ( How to execute VBA macro by C# code )
关于c# - 将 DataTable 导出到 dotx 中的 MS word 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30959784/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 4 年前。 Improve th
所以,首先这是我打开 dotx 并创建一个新的 docx 副本(然后修改副本)的代码。为简洁起见,但本质上采用 3 个参数的数据表(以使其可用于遗留系统),作为模板字符串的 UNC 路径和作为输出文档
我有一个非常奇怪的问题,我希望其他人可能知道。 我有一个包含以下代码的 VB6 Dim filename As String: filename = Dir("c:\somepath\*.dot")
我正在使用此代码替换 2 个单词并从 *.dotx (sourceFile) 文件生成一个 *.doc (destinationFile) 文件。 Dictionary keyValues = new
我想从现有的 dotx 模板创建新文档。 我尝试了这里列出的几种方法 - How can I use predefined formats in DOCX with POI?但它们都不起作用。 设置样
TortoiseSVN 具有惊人的差异 Microsoft Word 文档修订的能力,这显然是由 C:\Program Files\TortoiseSVN\Diff-Scripts 中的脚本实现的。这
我想在 Excel 工作簿中嵌入一个 word 模板,以便用户可以单击生成报告按钮并让 word 使用 word 模板打开一个新文档。 以下代码直接编辑 dotx 并允许对模板进行更改,这是不可取的,
我一直在尝试将数据表导出到 excel 表,但现在我想将数据表导出到 word 表。 我有一个包含 excel 嵌入对象的 word 模板文件,我想使用数据表填充该对象。这是我一直用来将自定义值导出到
我在 XPages 应用程序中使用 docx4j 创建包含 XPage 内容的 Word 文档。 Word 文档(.docx 格式)是基于模板(也是 docx.format)创建的。这一切都很好。但是
我正在尝试使用 OpenXML 2.5 库从 Word 模板 (.dotx) 创建 .docx 文件。更确切地说,我正在尝试遵循 this ,但我想使用 MemoryStream 打开文档,而不是文件
我正在维护一个 Web 应用程序,允许在浏览器中打开 Word 模板文档。 最近客户端升级到Windows 7和MS Word 2007,我的问题开始出现...当在浏览器中打开模板文档并保存时,原始文
我是一名优秀的程序员,十分优秀!