C# 中 打印word文档问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 中 打印word文档问题相关的知识,希望对你有一定的参考价值。

再winform中有个打印按钮,点下 就可以打印指定的word文档.
请问要怎么实现? 具体用什么控件 和方法 在网上都可以找到了。我有一点不明白!
1: 打印时用控件 是自动把word文档的内容和格式全部获取了吗?包括用户刚刚输入的内容。
2:再程序里,我想打印那个文档,我需要做的事情是什么?
3: 高手们能不能给我一个简单的例子,(比如文档上只有一个用户输入的地方,然后程序里一个按钮,按下就可以打印此文档)
请各位高手细心解答下。谢谢了

第一个问题:如果你是绑定了数据或者文件,那么是全部显示的。
第二个问题:打印控件里有一个printDocument的控件,可以自定义给打印机发送输出对象。
你只要记住:最重要的就是printDocument控件。其他的打印控件都是设置页面啊,大小啊什么的。

---------------------------------------------你建一个窗体,在窗体中放一个textBox,设置为多行显示的MultiLine。再拖入拖如三个Button写上“打印”,“预览”,“退出”,分别拖入PrintDiaolg,PrintDocument,OpenFileDialog,
openFileDialog用来打开你的文档
开始写方法:

具体怎么打印的方法不用写,因为方法都给你写好了。
双击“预览”开始写事件:

try

string strText = this.txtContent.Text;
objStringReader = new StringReader(strText); //将需要打印的文档内容(赋给)字串流--该字串流将在被打印对象使用
PrintPreviewDialog objPrintPreviewDialog = new PrintPreviewDialog();
objPrintPreviewDialog.Document = this.pdocText ; //将previewdialog与printdocument相链接,pdoText就是printdocument
objPrintPreviewDialog.ShowDialog(); //显示预览窗口

catch(Exception exp)

System.Console.WriteLine(exp.Message.ToString());


在双击“打印”按钮

this.pdlgTextPrint.Document = pdocText; //将printdocument与printdialog联系起来
string strText = this.txtContent.Text;
objStringReader = new StringReader(strText);//将需要打印的文档内容(赋给)字串流--该字串流将在被打印对象使用
if (this.pdlgTextPrint.ShowDialog() == DialogResult.OK)

this.pdocText.Print(); //使用printdocument的“打印方法”


双击“关闭”

private void btnExit_Click(object sender, System.EventArgs e)

this.Close();


不懂再问
参考技术A 可以自动提取word文档,但最好点刷新一下,好让内存重新获取打印内容;在打印选项里选择打印本页,不要全选本回答被提问者采纳

用c#替换word文档中的占位符

【中文标题】用c#替换word文档中的占位符【英文标题】:Replace Placeholders in word document with c# 【发布时间】:2010-09-15 23:40:41 【问题描述】:

我有一个 word (.docx) 格式的模板,想用我自己的数据替换这个模板中的一些占位符,你知道我在哪里可以找到适合这个项目的类吗?知道命名空间对我来说会很好。是否有比 com 类更新的用于处理 docx 格式 (xml) 的 word 文档的类?感谢您的所有回答,我希望有人可以帮助我解决我的问题。

问候

塞巴斯蒂安

【问题讨论】:

【参考方案1】:

新的办公格式(docx、xlsx 等)是包含 xml 文件集合的 zip 文件。考虑到这一点,您有几种方法。

    您可以使用位于http://www.microsoft.com/downloads/details.aspx?FamilyId=AD0B72FB-4A1D-4C52-BDB5-7DD7E816D046&displaylang=en的 Open XML SDK

    您可以解压缩 docx 文件,搜索并替换您的令牌,然后将其压缩备份。

openxmldeveloper.org 有一个网站就是专门针对这类事情的。另外,请记住,他们已经发布了 SDK 的测试版 2。

【讨论】:

仅供参考,Open XML SDK 的 v2.0 现已在此处提供:microsoft.com/downloads/…【参考方案2】:

Eric White 在blog article detailing a program meant to validate source snippets embedded in DocX files 中已经谈到了这个主题。除了那篇文章,我强烈建议您阅读他在Office Open XML and C# 上的系列文章。

【讨论】:

【参考方案3】:

我用过这个:

IEnumerable test2 = 来自 body.Elements() 中的元素 其中 element.InnerText.Contains("sdt") 选择元素;

【讨论】:

【参考方案4】:

顺便说一句,使用 xml 我找到了这个解决方案,它可以找到所有 sdt-nodes

 NameTable nt = new NameTable();
        XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
        nsManager.AddNamespace("w", wordmlNamespace);

        XmlDocument xDoc = new XmlDocument();
        xDoc.Load(doc.MainDocumentPart.GetStream());

        XmlNodeList nodeList = xDoc.SelectNodes(@"./w:document/w:body//w:sdt", nsManager);

它可以工作,但 Open XML Format SDK 2.0 没有给我任何机会吗?

【讨论】:

以上是关于C# 中 打印word文档问题的主要内容,如果未能解决你的问题,请参考以下文章

C# Apose Word 中的知识点详细的总结及代码示例

HP 1010打印机无法打印word文档?

java打印word

如何把A4的word文档,用A5大小的纸张打印出来,

C#中二进制数据与word文档之间的转换

在 C# 中操作 Word 2007 文档 XML