应用邮件合并后无法打印文档

本文关键字:打印 文档 合并 应用 | 更新日期: 2023-09-27 18:34:57

我在应用邮件合并后尝试打印文档,但出现以下错误:

无法将类型"Microsoft.interop.word.document"隐式转换为"System.drawing.printing.printdocument">

这是代码:

private void btnSave_Click(object sender, EventArgs e)
{
    // Open the database connection.
    string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'_Employees'Employee_Database'Database From Excel.accdb";
    OleDbConnection conn = new OleDbConnection(connString);
    try
    {
        conn.Open();
        // Get data from a database.
        OleDbCommand cmd = new OleDbCommand("SELECT * FROM EmpInfo", conn);
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        System.Data.DataTable data = new System.Data.DataTable();
        da.Fill(data);
        // Open the template document.
        Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document(@"c:'_Employees'Template'MergeDoc.docx");
        System.Drawing.Printing.PrintDocument docToPrint = new System.Drawing.Printing.PrintDocument();
        // Loop though all records in the data source.
        foreach (DataRow row in data.Rows)
        {
            // Execute mail merge.
            doc.MailMerge.Execute(row);
            docToPrint = (PrintDocument)doc;
            DialogResult result = printDialog1.ShowDialog();
            // If the result is OK then print the document.
            if (result == DialogResult.OK)
            {
                docToPrint.Print();
            }                    
        }

经过一些更改后,没有错误,但页面无法打印。似乎有什么问题?

应用邮件合并后无法打印文档

当您使用"Word 互操作"时,您必须通过 Word 应用程序界面进行打印。只有Word真正知道如何解释Word内容(XML和其他文件的Zip包(进行打印。.NET Framework 的 System.Drawing.Print 不能处理 Word 文档。

因此,正如错误消息告诉您的那样,您不能将 Word.Document 对象强制转换为 System.Drawing.Printing.PrintDocument。

可以使用 Word 对象模型的 Document.Print 命令及其参数(如果需要设置副本数等(。使用您的代码作为基础:doc.Print();

我不知道您的 PrintDialog 是做什么用的,所以无法就如何将其与打印 Word 文档联系起来发表评论......