zoukankan      html  css  js  c++  java
  • 遍历打印文件夹中的word文档

    今天帮同事写了一个打印文档的Demo程序,采用了异步方式,上代码

    代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.Office.Interop.Word;
    using System.IO;

    namespace Printer
    {
        
    class Program
        {
            
    private static string dirInfo = System.Configuration.ConfigurationSettings.AppSettings["path"].ToString();
            
    public delegate void printer1(ref Microsoft.Office.Interop.Word.Application app, ref Microsoft.Office.Interop.Word.Document doc, ref object missing, FileInfo file);
            
    static void Main(string[] args)
            {
                Microsoft.Office.Interop.Word.Application app 
    = null;
                Microsoft.Office.Interop.Word.Document doc 
    = null;
                
    object missing = System.Reflection.Missing.Value;
                
    try
                {
                    DirectoryInfo Dir 
    = new DirectoryInfo(dirInfo);
                    Console.WriteLine(
    "开始了遍历文件夹");
                    
    foreach (var file in Dir.GetFiles ())     //查找子目录   
                    {
                        file.Extension.ToString();
                        printer1 p;
                        
    if (file.Extension.ToString().ToLower() == ".docx" || file.Extension.ToString().ToLower() == ".doc")
                        {
                            Console.WriteLine(
    "开始打印文件"+file.FullName);
                            p 
    = new printer1(Printer);
                            IAsyncResult ar 
    = p.BeginInvoke(ref app, ref doc, ref missing, file, Finish, file);
                            
                            
    //p(ref app, ref doc, ref missing, file);
                        }
                    }

                    

                }
                
    catch (Exception exp)
                {
                    Console.WriteLine(exp.Message);
                }

                
    //销毁word进程
                finally
                {
                    
    object saveChange = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
                    
    if (doc != null)
                        doc.Close(
    ref saveChange, ref missing, ref missing);

                    
    if (app != null)
                        app.Quit(
    ref missing, ref missing, ref missing);
                }

                Console.Read();
            }

            
    static void Finish(IAsyncResult ir)
            {
                FileInfo file 
    = (FileInfo)ir.AsyncState;

                Console.WriteLine(file.FullName 
    + "打印完成");
            }

            
    private static void Printer(ref Microsoft.Office.Interop.Word.Application app, ref Microsoft.Office.Interop.Word.Document doc, ref object missing, FileInfo file)
            {
                
    try
                {
                    
    object templateFile = file.FullName;
                    app 
    = new Microsoft.Office.Interop.Word.ApplicationClass();
                    doc 
    = app.Documents.Add(ref templateFile, ref missing, ref missing, ref missing);
                    
    //打印
                    doc.PrintOut(ref missing, ref missing, ref missing, ref missing,
                         
    ref missing, ref missing, ref missing, ref missing, ref missing,
                         
    ref missing, ref missing, ref missing, ref missing, ref missing,
                         
    ref missing, ref missing, ref missing, ref missing);
                }
                
    catch
                {

                }
            }


        }
    }

     (需要引用Microsoft.Office.Interop.Word com组件)

  • 相关阅读:
    【推荐】 HyperLedger Fabric环境搭建、测试及注意事项 [详尽指导] [亲测有效]
    Ubuntu16.04 部署安装Docker容器 & 注意事项
    Ubuntu16.04 部署配置GO语言开发环境 & 注意事项
    ubuntu文件系统分区调整(解决目录空间不足、分配不均问题)
    区块链技术开发路线
    区块链技术现状&前景
    [兴业银行研究报告] 区块链与数字货币的发展现状、相互关联性及未来应用前景
    区块链技术的典型应用
    (转)akka Router实例
    org.springframework.beans.NotWritablePropertyException
  • 原文地址:https://www.cnblogs.com/dlz1123/p/1961561.html
Copyright © 2011-2022 走看看