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

  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/alannxu/p/10972947.html
Copyright © 2011-2022 走看看