引用Aspose.Words,操作Word模板创建表格

             最近项目开发涉及到了操作Word模板,先前用Office的动态库编码,完成后,部署客户环境时候,发现出现各种问题,需要安装office,然后报出各种


注册表问题,麻烦的太太,于是改用另一种方法,引进Aspose.Words.dll后,就直接操作word模板,画表格,非常方便,于是把方法记录下来,分享给大家,


希望大家能在以后的工作中避开不必要的选择时间浪费,共进共勉:


 /// <summary>

        /// AsPose.Word's Export
        /// </summary>
        /// <returns></returns>
        public static string AsPoseExportData(ReportType roportType, Dictionary<string, string> param)
        {
            //Report Template'work Path
            string path = Path.Combine(SPUtility.GetGenericSetupPath(@"TEMPLATE\LAYOUTS\Akmii.BMS.China.Workflow\ReportTemplate"), roportType.ToString() + ".docx");
            Aspose.Words.Document doc = new Aspose.Words.Document(path);
            DocumentBuilder builder = new DocumentBuilder(doc);


            builder.MoveToCell(0, 0, 1, 0);
            builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Bottom;
            builder.Write(param["ReportName"].ToString());
            builder.MoveToDocumentEnd();---------------------------------------------------------- 注意:换行,重新开始


            //Insert Empty Rows
            builder.StartTable();
            builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.None;
            for (int j = 0; j < 1; j++)
            {
                builder.InsertCell();
                builder.EndRow();
            }
            builder.EndTable();
            builder.MoveToDocumentEnd();


            //Insert Table Head
            builder.StartTable();
            builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.None;
            for (int j = 0; j < 2; j++)
            {
                if (j == 0)
                {
                    builder.InsertCell();
                    builder.Bold = true;
                    builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    builder.Write("EventNo:");
                    builder.InsertCell();
                    builder.Bold = false;
                    builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    builder.Write(param["EventNo"].ToString());
                    builder.InsertCell();
                    builder.Write("");
                    builder.InsertCell();
                    builder.Write("");
                }
                else if (j == 1)
                {
                    builder.InsertCell();
                    builder.Bold = true;
                    builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    builder.Write("Venue:");
                    builder.InsertCell();
                    builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    builder.Bold = false;
                    builder.Write(param["Venue"].ToString());
                    builder.InsertCell();
                    builder.Bold = true;
                    builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
                    builder.Write("Meeting Date:");
                    builder.InsertCell();
                    builder.Bold = false;
                    builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                    builder.Write(Convert.ToDateTime(param["ActivityDate"]).ToString("yyyy-MM-dd"));
                }
                builder.EndRow();
            }
            builder.EndTable();
            //Insert Other table
            builder.MoveToDocumentEnd();


            //Insert Empty Rows
            builder.StartTable();
            builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.None;
            for (int j = 0; j < 1; j++)
            {
                builder.InsertCell();
                builder.EndRow();
            }
            builder.EndTable();
            builder.MoveToDocumentEnd();


            //Data Table Start 
            builder.StartTable();
            builder.CellFormat.Borders.LineStyle = Aspose.Words.LineStyle.Inset;
            builder.Bold = true;
            DataTable dtAttendee = GetDataInfo(param["EventNo"].ToString());
            int dtAttendeeCnt = dtAttendee.Rows.Count;
            int columncnt = 5;


            //Insert Table Data
            for (int i = 0; i < dtAttendeeCnt; i++)
            {
                if (i == 0)
                {
                    //Create Table Head Data
                    for (int j = 0; j < columncnt; j++)
                    {
                        builder.Bold = true;
                        if (j == 0)
                        {
                            builder.InsertCell();
                            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                            builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
                            builder.Write("Name");
                        }
                        else if (j == 1)
                        {
                            builder.InsertCell();
                            builder.Write("Title");
                        }
                        else if (j == 2)
                        {
                            builder.InsertCell();
                            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                            builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
                            builder.Write("Hospitals&Speciaty/Organ");
                        }
                        else if (j == 3)
                        {
                            builder.InsertCell();
                            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                            builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
                            builder.Write("Signature");
                        }
                        else if (j == 4)
                        {
                            builder.InsertCell();
                            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                            builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
                            builder.Write("Remarks");
                        }
                    }
                }
                else
                {
                    for (int j = 0; j < columncnt; j++)
                    {
                        builder.InsertCell();
                        if (j == 2)
                        {
                            builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                        }
                        else
                        {
                            builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
                        }
                        builder.CellFormat.VerticalAlignment = CellVerticalAlignment.Center;
                        builder.Bold = false;
                        builder.Font.Size = 10;
                        builder.Write(dtAttendee.Rows[i][j].ToString());
                    }
                }
                builder.EndRow();
            }
            builder.EndTable();
            //Save output document
            string filename = Path.Combine(SPUtility.GetGenericSetupPath(@"TEMPLATE\LAYOUTS\Akmii.BMS.China.Workflow\ReportTemplate"), "ak_ABMeetingAttendee_Result.docx");
            doc.Save(filename);
            return filename;
        }

    }


只截取了方法的片段,如有好的建议可以留言讨论,谢谢!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值