先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);
}