zoukankan      html  css  js  c++  java
  • C#——操作Word并导出PDF

    一、操作Word 

      首先引用这个DLL,Microsoft.Office.Interop.Word,官方提供的。

      可以操作word文字,表格,图片等。

      文字通过替换关键字的方式实现

      document.Paragraphs[i].Range.Text = temptext.Replace("{$village}", "HELLO WORLD");

      表格可以自己获取模板中已有的表格

       Microsoft.Office.Interop.Word.Table table1 = document.Tables[1];

       table1.Cell(1, 1).Range.Text = "TEST1";

      也可以自己创建表格,可以设计表头,单元格等。

       int tableRow = 6 ;
       int tableColumn = 6;
        //定义一个Word中的表格对象
       Microsoft.Office.Interop.Word.Table table = document.Tables.Add(document.Paragraphs[i].Range,
       tableRow, tableColumn, ref Nothing, ref Nothing);
       //默认创建的表格没有边框,这里修改其属性,使得创建的表格带有边框 
       table.Borders.Enable = 1;
       table.Cell(1, 1).Merge(table.Cell(2, 1));//纵向合并
       table.Cell(1, 1).Range.Text = "牌号/代码";
    
       table.Cell(1, 2).Merge(table.Cell(2, 2));//纵向合并
       table.Cell(1, 2).Range.Text = "标准编号";
      有一篇文章写的很详细可以参考下:https://www.cnblogs.com/xh6300/p/5915717.html
    public bool CreateWord(DataTable dttmp)
            {
                bool result = false;
                Object Nothing = Missing.Value;
                Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
                Microsoft.Office.Interop.Word.Document document = null;
                string path = @"C:UsersAdministratorDesktopBB合同模版.doc";
                object FileName = @"C:UsersAdministratorDesktopBB" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".doc";
                application.Visible = false;
                document = application.Documents.Open(path);
    
                int rowNum = dttmp.Rows.Count;
                for (int i = 1; i <= document.Paragraphs.Count; i++)
                {
                    string temptext = document.Paragraphs[i].Range.Text;
                    //以下为替换文档模版中的关键字
                    if (temptext.Contains("{$village}"))
                        document.Paragraphs[i].Range.Text = temptext.Replace("{$village}", "HELLO WORLD");
                    Microsoft.Office.Interop.Word.Table table1 = document.Tables[1];
                    table1.Cell(1, 1).Range.Text = "TEST1";
                    if (temptext.Contains("{$Table1}"))
                    {
                        //设置表格的行数和列数
                        int tableRow = 6 + rowNum;
                        int tableColumn = 13;
                        //定义一个Word中的表格对象
                       
    
                        Microsoft.Office.Interop.Word.Table table = document.Tables.Add(document.Paragraphs[i].Range,
                          tableRow, tableColumn, ref Nothing, ref Nothing);
                        //默认创建的表格没有边框,这里修改其属性,使得创建的表格带有边框 
                         table.Borders.Enable = 1;//这个值可以设置得很大
                         table.Cell(1, 1).Merge(table.Cell(2, 1));//纵向合并
                         table.Cell(1, 1).Range.Text = "牌号/代码";
    
                         table.Cell(1, 2).Merge(table.Cell(2, 2));//纵向合并
                         table.Cell(1, 2).Range.Text = "标准编号";
    
                     
    
                         table.Cell(1, 6).Merge(table.Cell(2, 6));
                         table.Cell(1, 6).Range.Text = "单重
    (MT)";
    
                         table.Cell(1, 7).Merge(table.Cell(2, 7));
                         table.Cell(1, 7).Range.Text = "张数";
                         
                         table.Cell(1, 8).Merge(table.Cell(2, 8));
                         table.Cell(1, 8).Range.Text = "重量
    (MT))";
                      
                         
    
                         table.Cell(1, 9).Merge(table.Cell(2, 9));
                         table.Cell(1, 9).Range.Text = "单价
    (元/吨)";
                                            
                         table.Cell(1, 10).Merge(table.Cell(2, 10));
                         table.Cell(1, 10).Range.Text = "金额(人民币)";
                                          
             
                         table.Cell(1, 13).Merge(table.Cell(2, 13));
                         table.Cell(1, 13).Range.Text = "交货期";
    
                         table.Cell(1, 3).Merge(table.Cell(1, 5));//横向合并
                         table.Cell(1, 3).Range.Text = "规格(mm)";
                         table.Cell(2, 3).Range.Text = "厚度";
                         table.Cell(2, 4).Range.Text = "宽度";
                         table.Cell(2, 5).Range.Text = "宽度";
    
                         table.Cell(1, 9).Merge(table.Cell(1, 10));
                         table.Cell(1, 10).Range.Text = "表面加工";
                         table.Cell(2, 11).Range.Text = "边缘";
                         table.Cell(2, 11).Range.Text = "精度";
                    
                    }
                }
               
                object format = document.SaveFormat;
                document.Save();
    
                application.Quit(ref Nothing, ref Nothing, ref Nothing);
                return result;
    
            }

    二、Word导出PDF

      

     public bool WordToPDF(string sourcePath)
            {
                bool result = false;
               Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
                Microsoft.Office.Interop.Word.Document document = null;
                try
                {
                    application.Visible = false;
                    document = application.Documents.Open(sourcePath);
                    string PDFPath = sourcePath.Replace(".doc", ".pdf");//pdf存放位置
                    if (!File.Exists(@PDFPath))//存在PDF,不需要继续转换
                    {
                        document.ExportAsFixedFormat(PDFPath, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);
                    }
                    result = true;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    result = false;
                }
                finally
                {
                    //document.Close();
                }
                return result;
            }

     服务器部署可以参考;https://www.cnblogs.com/5426z/articles/4865312.html

  • 相关阅读:
    js数组基础
    JavaScript原型链
    js之promise讲解
    ajax登录验证-js
    js事件委托
    js中的回调函数的理解和使用方法
    js闭包的理解
    JavaScript是如何实现继承的(六种方式)
    js创建对象的几种常用方式小结
    canvas绘图详解-08-样式填充
  • 原文地址:https://www.cnblogs.com/alannxu/p/10972947.html
Copyright © 2011-2022 走看看