C#模板导出Word

导出word

选择插入  》选择文档部件》选择域》选择左侧域名的邮件合并填表字段 

先using Aspose.Words;
using Aspose.Words.Saving;

即 引入 Aspose.Cells.dll   和     Aspose.Words.dll  两个程序集

try
            {
                int AnalyzeType = this.ddlAnalyzeType.SelectedValue.ToInteger();
                string pnr = "";//this.confirmPNR.Value.Trim();
                string orderNum = this.orderNum.Value.Trim();
                StringBuilder sbAirLine = new StringBuilder();

                DataSet ds = 客服系统_机票业务DAImpl().客服系统_机票_导出国内国际出票确认单(orderNum, AnalyzeType);

                DataTable I_Itinerary = new DataTable("itineraryMsg");
                I_Itinerary.Columns.Add("出发到达");
                I_Itinerary.Columns.Add("出发到达机场");
                I_Itinerary.Columns.Add("航班");//航班
                I_Itinerary.Columns.Add("舱位");
                I_Itinerary.Columns.Add("起飞时间");//起飞时间
                I_Itinerary.Columns.Add("到达时间");//到达时间
                I_Itinerary.Columns.Add("出发");
                I_Itinerary.Columns.Add("到达");
                DataTable dt = CommonMethod.查询所有机场数据();
                string strTripMsg = "";
                string strFromTo = "";
                DataTable dttrip = ds.Tables[1];
                string[] 行程信息 = dttrip.Rows[0]["行程信息"].ToString().Split('|');
                string[] 航站楼信息 = dttrip.Rows[0]["航站楼信息"].ToString().Split('|');
                string[] 航班号 = dttrip.Rows[0]["航班号"].ToString().Split('|');
                string[] 航空公司 = dttrip.Rows[0]["航空公司"].ToString().Split('|');

                string[] 舱位 = dttrip.Rows[0]["舱位"].ToString().Split('|');
                string[] 起飞时间 = dttrip.Rows[0]["起飞时间"].ToString().Split('|');
                string[] 到达时间 = dttrip.Rows[0]["到达时间"].ToString().Split('|');
                string[] 票号信息 = dttrip.Rows[0]["票号信息"].ToString().Split('§');
                string[] 乘客信息 = dttrip.Rows[0]["乘客信息"].ToString().Split('§');
                string[] 证件号 = dttrip.Rows[0]["乘客信息"].ToString().Split('§');
                for (int i = 0; i < 行程信息.Length; i++)
                {
                    DataTable dtcabin = 客服系统_机票业务DAImpl().客服系统_机票_查询航司舱位对应舱位等级(航空公司[i].Trim(), 舱位[i].Trim()).Tables[0];

                    DataRow drItinerary = I_Itinerary.NewRow();
                    DataRow[] drsFrom = dt.Select("代码= '" + 行程信息[i].Split('-')[0] + "'");
                    DataRow[] drsTo = dt.Select("代码= '" + 行程信息[i].Split('-')[1] + "'");
                    string strFromCity = 行程信息[i].Split('-')[0];
                    if (drsFrom.Length > 0)
                    {
                        strFromCity = drsFrom[0]["简称"].ToString();
                    }
                    string strToCity = 行程信息[i].Split('-')[1];
                    if (drsTo.Length > 0)
                    {
                        strToCity = drsTo[0]["简称"].ToString();
                    }
                    string cabinLevel = dtcabin.Rows.Count > 0 ? dtcabin.Rows[0]["舱位等级"].ToString() : 舱位[i] + "舱";
                    drItinerary["出发到达"] = drsFrom[0]["中文全称"].ToString() + "(" + 行程信息[i].Split('-')[0] + ")-" + drsTo[0]["中文全称"].ToString() + "(" + 行程信息[i].Split('-')[1] + ")";
                    drItinerary["出发到达机场"] = strFromCity + "-" + strToCity;
                    drItinerary["航班"] = 航班号[i];
                    drItinerary["舱位"] = cabinLevel.Contains("头等舱") ? "头等舱\r\nFirst class" : (cabinLevel.Contains("公务舱") ? "公务舱\r\nBusiness class" : (cabinLevel.Contains("超级经济舱") ? "超级经济舱\r\nPremium economy class" : (cabinLevel.Contains("经济舱") ? "经济舱\r\nEconomy class" : cabinLevel)));
                    drItinerary["起飞时间"] = Convert.ToDateTime(起飞时间[i]).ToString("yyyy-MM-dd HH:mm");
                    drItinerary["到达时间"] = Convert.ToDateTime(到达时间[i]).ToString("yyyy-MM-dd HH:mm");
                    drItinerary["出发"] = String.IsNullOrEmpty(航站楼信息[i].Split('#')[0]) || 航站楼信息[i].Split('#')[0] == "--" ? "" : 航站楼信息[i].Split('#')[0];
                    drItinerary["到达"] = String.IsNullOrEmpty(航站楼信息[i].Split('#')[1]) || 航站楼信息[i].Split('#')[1] == "--" ? "" : 航站楼信息[i].Split('#')[1];
                    I_Itinerary.Rows.Add(drItinerary);
                    if (strFromTo == 行程信息[i].Split('-')[0])
                    {
                        strTripMsg += 行程信息[i].Split('-')[1];
                    }
                    else
                    {
                        strTripMsg += 行程信息[i].Split('-')[0] + 行程信息[i].Split('-')[1];
                    }
                    strFromTo = 行程信息[i].Split('-')[1];
                }
                if (I_Itinerary.Rows.Count == 0)
                {
                    noUpdatePanelJs("parentFuc( '没有行程信息,,不能导出Word!','warning')");
                    return;
                }
                DataTable I_Passager = new DataTable("passagerMsg");
                I_Passager.Columns.Add("序号");
                I_Passager.Columns.Add("旅客姓名");
                I_Passager.Columns.Add("证件号");
                I_Passager.Columns.Add("票号");
                I_Passager.Columns.Add("性别");
                I_Passager.Columns.Add("出生日期");
                I_Passager.Columns.Add("证件有效期");


                string[] arrPassagerName = Request.Form["txtPersonName"].Split(',');
                string[] arrPassagerCardNo = Request.Form["txtCardNumber"].Split(',');
                string[] arrPassagerTicketPrice = Request.Form["txtTicketPriceAndTax"].Split(',');
                string[] arrPassagerSettlePrice = Request.Form["txtSettlePriceAndTax"].Split(',');
                decimal TicketPriceTotal = 0;
                decimal SettlePriceTotal = 0;
                for (int i = 0; i < arrPassagerName.Length; i++)
                {
                    DataRow drPassager = I_Passager.NewRow();
                    drPassager["序号"] = i + 1;
                    drPassager["旅客姓名"] = arrPassagerName[i].Trim();
                    drPassager["证件号"] = arrPassagerCardNo[i].Trim();
                    drPassager["票号"] = 票号信息[i];
                    drPassager["性别"] = ds.Tables[4].Rows[i]["乘客性别"].ToString();
                    drPassager["出生日期"] = ds.Tables[4].Rows[i]["乘客生日"].ToString();
                    drPassager["证件有效期"] = AnalyzeType == 1 ? "" : ds.Tables[4].Rows[i]["乘客证件有效期"].ToString();

                    TicketPriceTotal += arrPassagerTicketPrice[i].Trim().ToDecimal();
                    SettlePriceTotal += arrPassagerSettlePrice[i].Trim().ToDecimal();
                    I_Passager.Rows.Add(drPassager);
                }
                if (I_Passager.Rows.Count == 0)
                {
                    noUpdatePanelJs("parentFuc( '没有旅客信息,不能导出Word!','warning')");
                    return;
                }
                DataTable I_Other = new DataTable("otherMsg");
                I_Other.Columns.Add("机票");//客户名称
                I_Other.Columns.Add("燃油费");//编码内容
                I_Other.Columns.Add("机票税");//业务员
                I_Other.Columns.Add("保险费");//票面价含税总计
                I_Other.Columns.Add("服务费");//结算价含税总计

                DataRow drOther = I_Other.NewRow();
                drOther["机票"] = SettlePriceTotal;
                drOther["燃油费"] = ds.Tables[2].Rows[0]["燃油费"].ToString().ToDecimal() * arrPassagerName.Length;
                drOther["机票税"] = ds.Tables[2].Rows[0]["机建费"].ToString().ToDecimal() * arrPassagerName.Length;
                drOther["保险费"] = ds.Tables[3].Rows[0]["保险销售总金额"].ToString();
                drOther["服务费"] = ds.Tables[0].Rows[0]["服务费总价"].ToString();

                I_Other.Rows.Add(drOther);

                DataTable dtTotalFee = new DataTable("totalFee");
                dtTotalFee.Columns.Add("总计");
                DataRow drTotalFee = dtTotalFee.NewRow();
                drTotalFee["总计"] = TicketPriceTotal + ds.Tables[2].Rows[0]["燃油费"].ToString().ToDecimal() * arrPassagerName.Length + ds.Tables[2].Rows[0]["机建费"].ToString().ToDecimal() * arrPassagerName.Length + ds.Tables[3].Rows[0]["保险销售总金额"].ToString() + ds.Tables[0].Rows[0]["服务费总价"].ToString();
                dtTotalFee.Rows.Add(drTotalFee);

                DataTable dtDate = new DataTable("Date");
                dtDate.Columns.Add("时间");
                DataRow drDate = dtDate.NewRow();
                drDate["时间"] = DateTime.Now.ToLongDateString();
                dtDate.Rows.Add(drDate);

                DataTable I_TipsMsg = new DataTable("tipsMsg");
                I_TipsMsg.Columns.Add("提示序号");//客户名称
                I_TipsMsg.Columns.Add("提示内容");//编码内容  
                DataRow drTips = I_TipsMsg.NewRow();
                drTips["提示序号"] = 1;
                drTips["提示内容"] = AnalyzeType == 1 ? this.divNativeTips.InnerText.Trim() : this.divInterTips.InnerText.Trim();
                I_TipsMsg.Rows.Add(drTips);
                DataSet dsWord = new DataSet();
                dsWord.Tables.Add(I_Itinerary);
                dsWord.Tables.Add(I_Passager);
                dsWord.Tables.Add(I_Other);
                dsWord.Tables.Add(I_TipsMsg);
                dsWord.Tables.Add(dtTotalFee);
                dsWord.Tables.Add(dtDate);
                string strTemp = Server.MapPath("~/FileTemplet/") + (AnalyzeType == 1 ? "/国内机票行程出票单.docx" : "/国际机票行程出票单.docx");这里引入做好的word文档,word文档必须保存到项目文件夹,导出的时候调用文档
                Document doc = new Document(strTemp);
                doc.MailMerge.ExecuteWithRegions(dsWord);
                string strWordName = strTripMsg + I_Passager.Rows.Count + ".doc";
                doc.Save(Page.Response, strWordName, ContentDisposition.Attachment, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
            }
            catch (Exception ex)
            {
                LogHelper.error("确认单,查询出票确认单数据报错:" + ex.Message);
            }

猜你喜欢

转载自blog.csdn.net/weixin_39885843/article/details/89888494