zoukankan      html  css  js  c++  java
  • 基于Aspose.Words 生成Word文件

    using Aspose.Words;

    string tmppath = Server.MapPath("~/TestWord.doc");
    Document doc = new Document(tmppath); //载入模板
    if (doc.Range.Bookmarks["Rhythmk"] != null)
    {
    Bookmark mark = doc.Range.Bookmarks["Rhythmk"];
    mark.Text = "张三公司";
    }
    doc.Save("demo.doc", SaveFormat.Doc, SaveType.OpenInWord, Response); //保存为doc,并打开

    附件下载:https://files.cnblogs.com/rhythmK/OperateWord.rar

    Aspose.Words初学者,请指教!

    1.先在你的项目中引入Aspose.Words.dll

    2.导出带图片人员信息到Word中代码如下:

    protected void btn_DownDoc_Click(objectsender, EventArgs e)
           {

             //实例化一个新的Word Document

             //也可以在Aspose.Words.Document doc = newAspose.Words.Document(path)中加path参数,

              //此path指向你设计好的Word模板路径
               Aspose.Words.Document doc = new Aspose.Words.Document();
               DocumentBuilder builder = new DocumentBuilder(doc);
                //设置单元格内容对齐方式
               builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;

             //清除设置

            builder.PageSetup.ClearFormatting();
               string sql = "select xyxz.fid,xyxz.name as xz,xyxz.ord_no,xy.* "+
                          "from jw_xyxx xy " +
                          "inner join g_infos g on g.id=xy.info_id andg.deleted<>-1 " +
                          "inner join sub_file_relation sub on sub.info_id=xy.info_id "+
                          "inner join jw_bcgl bc on bc.info_id=sub.finfo_id " +
                          "inner join g_infos g2 on g2.id=bc.info_id andg2.deleted<>-1 " +
                          "left join ( " +
                          "select wo.name,rel1.fid,rel1.ord_no,rel1.rel_id fromjw_classframework_rel rel1 " +
                          "inner join jw_classframework_rel rel2 on rel1.fid=rel2.id andrel1.bcinfo_id=rel2.bcinfo_id " +
                          "inner join jw_classframework wo on rel2.rel_id=wo.id andrel2.bcinfo_id=wo.bcinfo_id " +
                          "where rel1.bcinfo_id='"+myuser.ClassList[0].ClassID+"' " +
                          ") xyxz on xyxz.rel_id=xy.info_id " +
                          "where bc.info_id='"+myuser.ClassList[0].ClassID+"' and sub.xxzt=0" +
                          "order by xyxz.fid asc,xyxz.ord_no asc ";
               DBInfo();
               DataTable tbl = m_db.GetDataTable(sql, m_cn);
               List<string> list = newList<string>();
               
               if (tbl != null && tbl.Rows.Count> 0)
               {
                   //加载小组
                   for (int i = 0; i < tbl.Rows.Count; i++)
                   {
                       if (!list.Contains(tbl.Rows[i]["XZ"].ToString()))
                       {
                           list.Add(tbl.Rows[i]["XZ"].ToString());
                       }
                   }

                 double imgcellwidth = 85;
                   double imgcellheight = 120;
                   double cellwidth = 165;
                   double cellheight = 18.5;

                 //匹配小组中的学员
                   builder.StartTable();//开始画Table
                   builder.RowFormat.Alignment =Aspose.Words.Tables.RowAlignment.Center;
                   string xz = string.Empty;
                   int count = 0;
                   int rowcount = 0;
                   for (int n = 0; n < list.Count;n++ )
                   {
                       xz = list[n];
                       builder.RowFormat.Height = 20;
                       //插入Table单元格

                     builder.InsertCell();

                      //Table单元格边框线样式
                       builder.CellFormat.Borders.LineStyle = LineStyle.Single;

                      //Table此单元格宽度
                       builder.CellFormat.Width = 500;

                      //此单元格中内容垂直对齐方式
                       builder.CellFormat.VerticalAlignment =Aspose.Words.Tables.CellVerticalAlignment.Center;

                     builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                       builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;

                      //字体大小
                       builder.Font.Size = 11;

                      //是否加粗
                       builder.Bold = true;

                      //向此单元格中添加内容
                       builder.Write(xz);

                     //Table行结束
                       builder.EndRow();
                       builder.Bold = false;
                       DataRow[] rows = tbl.Select("xz='" + xz + "'");
                       for (int i = 0; i < rows.Length; i = i + 2)
                       {
                           count++;
                           rowcount = (count-1)*6+1+n;
                           //第一行
                           builder.InsertCell();
                           builder.RowFormat.Height = imgcellheight;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;

                         //合并行单元格
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.First;

                         builder.CellFormat.VerticalAlignment =Aspose.Words.Tables.CellVerticalAlignment.Center;
                           builder.CellFormat.TopPadding = 2;
                           builder.CellFormat.WrapText = false;
                           builder.CellFormat.Width = imgcellwidth;

                         if (!string.IsNullOrEmpty(rows[i]["ZPPATH"].ToString()))
                           {

                             //向此单元格中插入图片
                               Shape shape = new Shape(doc, ShapeType.Image);
                               string url =System.Configuration.ConfigurationManager.AppSettings["UserPhotosSitePath"]+ "\\" + rows[i]["ZPPATH"].ToString();
                               shape.ImageData.SetImage(url);
                               shape.Width = imgcellwidth-2;
                               shape.Height = imgcellheight;
                               shape.HorizontalAlignment = HorizontalAlignment.Center;
                               CompositeNode node = shape.ParentNode;

                             //把此图片移动到那个单元格中
                               builder.MoveToCell(0, rowcount, 0, 0);
                               builder.InsertNode(shape);
                           }

                         builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.Width = cellwidth;
                           builder.Write(rows[i]["XM"].ToString());

                         builder.InsertCell();
                           builder.RowFormat.Height = imgcellheight;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;

                         //合并行单元格
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.First;
                           builder.CellFormat.VerticalAlignment =Aspose.Words.Tables.CellVerticalAlignment.Center;
                           builder.CellFormat.Width = imgcellwidth;
                           if (rows.Length > i + 1)
                           {
                               if (!string.IsNullOrEmpty(rows[i + 1]["ZPPATH"].ToString()))
                               {
                                   Shape shape = new Shape(doc, ShapeType.Image);
                                   string url =System.Configuration.ConfigurationManager.AppSettings["UserPhotosSitePath"]+ "\\" + rows[i + 1]["ZPPATH"].ToString();
                                   shape.ImageData.SetImage(url);
                                   shape.Width = imgcellwidth-2;
                                   shape.Height = imgcellheight;
                                   shape.HorizontalAlignment = HorizontalAlignment.Center;
                                   CompositeNode node = shape.ParentNode;
                                   builder.MoveToCell(0, rowcount, 2, 0);
                                   builder.InsertNode(shape);
                               }
                           }
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.Width = cellwidth;
                           if (rows.Length > i + 1)
                           {
                               builder.Write(rows[i + 1]["XM"].ToString());
                           }
                           builder.EndRow();

                         //第二行
                           builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = cellwidth;
                           builder.Write("单位及职务:"+rows[i]["SZDW"].ToString());

                         builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.Width = cellwidth;
                           if (rows.Length > i + 1)
                           {
                               builder.Write("单位及职务:"+rows[i+1]["SZDW"].ToString());
                           }
                           builder.EndRow();

                         //第三行
                           builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = cellwidth;
                           builder.Write("单位电话:"+rows[i]["DWDH"].ToString());

                         builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.Width = cellwidth;
                           if (rows.Length > i + 1)
                           {
                               builder.Write("单位电话:"+rows[i+1]["DWDH"].ToString());
                           }
                           builder.EndRow();

                         //第四行
                           builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = cellwidth;
                           builder.Write("手机:"+rows[i]["SJHM"].ToString());

                         builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.Width = cellwidth;
                           if (rows.Length > i + 1)
                           {
                               builder.Write("手机:"+rows[i+1]["SJHM"].ToString());
                           }
                           builder.EndRow();

                         //第五行
                           builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = cellwidth;
                           builder.Write("邮编:"+rows[i]["DWYB"].ToString());

                         builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.Width = cellwidth;
                           if (rows.Length > i + 1)
                           {
                               builder.Write("邮编:"+rows[i+1]["DWYB"].ToString());
                           }
                           builder.EndRow();

                         //第六行
                           builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = cellwidth;
                           builder.Write("Email:"+rows[i]["DZYJ"].ToString());

                         builder.InsertCell();

                         //此单元格与上一行单元格合并
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.Previous;
                           builder.CellFormat.HorizontalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Width = imgcellwidth;
                           builder.InsertCell();
                           builder.RowFormat.Height = cellheight;
                           builder.CellFormat.VerticalMerge =Aspose.Words.Tables.CellMerge.None;
                           builder.CellFormat.Borders.LineStyle = LineStyle.Single;
                           builder.CellFormat.Width = cellwidth;
                           if (rows.Length > i + 1)
                           {
                               builder.Write("Email:"+rows[i+1]["DZYJ"].ToString());
                           }
                           builder.EndRow();
                       }
                   }
                   builder.EndTable();
               }
               string name = "学员通讯录.doc";

              //以下载Word的形式打开Wrod

              //如图所示:Aspose.Words导出带图片人员信息到Word中
               doc.Save(name, Aspose.Words.SaveFormat.Doc,Aspose.Words.SaveType.OpenInWord, Response);

    }

    4.整体效果如图所示:

    Aspose.Words导出带图片人员信息到Word中

    http://www.soujigu.com/blog_136010.html

  • 相关阅读:
    非网管交换机和网管交换机的区别
    百兆工业交换机与千兆工业交换机如何计算码率?
    光纤收发器的测试内容介绍
    使用expect在script中切换到root用户(精华)
    彻底解决ssh.invoke_shell() 返回的中文问题
    Python3之paramiko模块
    linux expect详解
    Apache HTTP Server 虚拟主机配置
    Apache 配置详解
    apache 基本配置
  • 原文地址:https://www.cnblogs.com/rhythmK/p/2276651.html
Copyright © 2011-2022 走看看