我们有一个数据库应用程序,用于存储我们要在Microsoft Word中报告的数据。
假设我的客户的所有信息都存储在数据库系统中,现在我要求创建数百个单词,并将报告发送给我的客户。这些字母具有相同的内容,但客户名称,客户地址等不同。
我想通过使用c#和.Net创建包含内容控件的文档模板来使用Office Word 2010,使用sql作为数据库来替换此模板的内容。
我一直在寻找有关在C#和dot net和sql中自动化Word 2010的文章。有人能帮我推动正确的方向吗?
答案 0 :(得分:1)
我曾经使用Interop.Word命名空间来自动执行此类过程。见http://www.codeproject.com/Articles/18703/Word-2007-Automation
答案 1 :(得分:1)
您可以在程序中使用Interop.Word,但请记住,可用的文档非常缺乏。我设法开发了我的应用程序,查看this one from C-SharpCorner或this one from WindowsDevCenter等示例。即使示例是旧的,您也可以获得主要想法并熟悉语法,然后使用Interop.Word的更新版本编写程序(语法稍微简单一些)。
在您的情况下,您应该创建一个整洁的Word模板,其中书签位于文档的位置,您将在其中插入客户信息。然后,当您插入从数据库中检索到的信息时,您可以从程序中打开模板并使用这些书签进行导航。
如果您不想深入了解Word自动化,例如DocX(甚至不需要Microsoft Word或Office),您可以尝试其他有趣的替代Interop.Word。已安装)或Open XML(生成.docx文件)。
答案 2 :(得分:1)
我过去曾使用Office.Interop程序集来实现这种功能,但这种方法有一些明显的缺点:
我还玩DocX和Open XML,两者都有其优点,但与Interop相比往往略有限制。我的建议是使用DocX或Open XML来尝试功能,如果你不能以任何其他方式实现功能,那么只能回到Interop。所有三个API都应该有大量的在线教程。
答案 3 :(得分:1)
检查此项目。 http://flexdoc.codeplex.com 使用flexdoc,您不需要安装ms字。我使用flexdoc创建word文件。
答案 4 :(得分:1)
此article包含可下载的源代码,可以很容易地用来解决您的问题。
答案 5 :(得分:1)
Microsoft建议在服务器进程中运行的任何应用程序使用OpenXml,这种方法可能是减少依赖性的最佳方法之一(正如其他人提到的那样)。以下是一些可以帮助您入门的链接:
下载OpenXml SDK 2.0:http://www.microsoft.com/en-au/download/details.aspx?id=5124
答案 6 :(得分:1)
因此,首先不要使用INTEROP,我已经使用了它过去4年,我必须告诉你它不是一个好主意(它真的丢失了,并且你会遇到很多问题。它实际上写在微软的网站上,你不应该把它用于服务器端生成。
你应该使用OpenXML SDK,我实际上刚刚开始使用它,但我必须说,即使它看起来有点难以使用,它的确定得更快强大>使用互操作,最好的事情是知道我不需要Office套件中的任何程序安装在我的电脑上,的缺点是我可以&#39 ; t导出为PDF或XPS 而不使用第三方库
你可以在这里找到sdk http://www.microsoft.com/en-us/download/details.aspx?id=30425
我建议下载该工具,它非常有用。
这是一个很好的教程,从它开始真的帮了我很多。
http://msdn.microsoft.com/en-us/library/office/bb448854.aspx
您也可以使用生产力工具中的API文档,该工具与sdk位于同一网站
答案 7 :(得分:1)
我同意其他人的观点,OpenXML SDK是一个很好的方法,出于同样的原因。我正在创建一个类似的报告生成中。不幸的是,我需要生成的报告非常动态,不仅有数据,还有布局。
如果您的布局不需要更改,那么我强烈建议您使用SDK工具,它允许您获取任何word文档并生成c#代码,以便您重新创建相同的文档。从那时起,您所要做的就是将文本替换为代码中所需的数据。 您可以用word创建通用报表,使用该工具获取代码,然后只需在代码中搜索占位符文本并用变量替换该字符串。它就像text1.text = reportData;
一样简单我还发现SDK工具是学习代码的好方法,您可以并排比较两个文件,看看它们在代码中的区别。
答案 8 :(得分:1)
您的答案是OpenXML SDK。
答案 9 :(得分:0)
您可以使用免费.NET Word API使用c#生成单词97~2010中的报告。
//Create word document
Document document = new Document();
document.LoadFromFile(@"..\..\..\..\..\..\Data\Fax.doc");
string[] filedNames = new string[]{"Contact Name","Fax","Date"};
string[] filedValues = new string[]{"John Smith","+1 (69) 123456",System.DateTime.Now.Date.ToString()};
document.MailMerge.Execute(filedNames, filedValues);
//Save doc file.
document.SaveToFile("Sample.doc", FileFormat.Doc);