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组件)

  • 相关阅读:
    广东发展银行系统分析师面试问题
    软件开发团队中的个人绩效评价
    高并发下的HashMap问题
    HashMap之equals和hashCode小陷阱
    Java面试中的多线程问题
    Java IO设计模式
    Java IO 流 设计模式
    关于bug的沟通
    Cookie/Session机制详解 <转>
    request.get... getHeader 能取得的信息 参数
  • 原文地址:https://www.cnblogs.com/dlz1123/p/1961561.html
Copyright © 2011-2022 走看看