項目總結:
1,自動增加序號 <%# Container.ItemIndex+1+(pageIndex-1)*PAGESIZE %>
Table導出到Excel時設置Excel單元格格式(文本、數字等)
2.導出
#region 導出Excel
protected void BtnExcel_Click(object sender, ImageClickEventArgs e)
{
string strTable = GetStringTable();
if (strTable != null && strTable != "")
{
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
// 添加頭信息,爲"文件下載/另存爲"對話框指定默認文件名
Response.AddHeader("Content-Disposition", "attachment; filename=ReceiveCustomer.xls");
// 添加頭信息,指定文件大小,讓瀏覽器能夠顯示下載進度
//Response.AddHeader("Content-Length", strTable.Length.ToString());
// 指定文件類型
Response.ContentType = "application/ms-excel";
// 把文件流發送到客戶端
Response.Write(strTable);
// 停止頁面的執行
Response.End();
}
}
/// <summary>
/// 導出數據源
/// </summary>
/// <returns></returns>
private string GetStringTable()
{
StringBuilder strTable = new StringBuilder();
strTable.Append("<table><tr><td>");
//添加表頭
strTable.Append("<table width=/"1000/" border=/"0/" align=/"center/" cellpadding=/"0/" cellspacing=/"0/">");
strTable.Append("<tr><td colspan=/"10/" class=/"big1/" align=/"center/">收客統計列表</td></tr></table>");
//添加列頭
strTable.Append("<table width=/"1000px/" border=/"1/" align=/"center/" cellpadding=/"0/" cellspacing=/"0/" bordercolor=/"#000000/">");
strTable.Append("<tr><td width=/"50px/" align=/"center/">序號</td><td width=/"100px/" align=/"center/">團號</td>");
strTable.Append("<td width=/"250px/" align=/"center/">線路名稱</td><td width=/"250px/" align=/"center/">組團社</td><td width=/"250px/" align=/"center/">出團日期</td><td width=/"100px/" align=/"center/">價格</td>");
strTable.Append("<td width=/"50px/" align=/"center/">人數</td><td width=/"100px/" align=/"center/">訂單號</td><td width=/"100px/" align=/"center/">總金額</td>");
startDate = Adpost.Common.Function.ValidatorValueManage.GetDateTimeNullable(Cal_StartDate.Text);
endDate = Adpost.Common.Function.ValidatorValueManage.GetDateTimeNullable(Cal_EndDate.Text);
if (!string.IsNullOrEmpty(txt_zuTuan.Value))
agencyName = txt_zuTuan.Value.Trim();
//獲取數據源
DataSet ds = bllTourOrder.GetSucessOrderList(agencyName, startDate, endDate, companyId, operatorId, isLookAll);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
//轉爲DT
DataTable dt = ds.Tables[0];
if (dt != null)
{
//循環
for (int i = 0; i < dt.Rows.Count; i++)
{
//開始組合數據行
strTable.Append("<tr>");
strTable.Append("<td align=/"center/">" + (i + 1) + "</td>");
//團號
if (dt.Rows[i]["SerialNumber"] != DBNull.Value)
{
strTable.Append("<td align=/"center/" style=/"vnd.ms-excel.numberformat:@/">" + dt.Rows[i]["SerialNumber"].ToString() + "</td>");
}
else
{
strTable.Append("<td align=/"center/" style=/"vnd.ms-excel.numberformat:@/"></td>");
}
//線路名稱
if (dt.Rows[i]["RouteName"] != DBNull.Value)
{
strTable.Append("<td align=/"center/">" + dt.Rows[i]["RouteName"].ToString() + "</td>");
}
else
{
strTable.Append("<td align=/"center/"></td>");
}
//組團社
if (dt.Rows[i]["AgencyName"] != DBNull.Value)
{
strTable.Append("<td align=/"center/">" + dt.Rows[i]["AgencyName"].ToString() + "</td>");
}
else
{
strTable.Append("<td align=/"center/"></td>");
}
//出團日期
if (dt.Rows[i]["LeaveDate"] != DBNull.Value)
{
strTable.Append("<td align=/"center/">" + DateTime.Parse(dt.Rows[i]["LeaveDate"].ToString()).ToString("yyyy-MM-dd") + "</td>");
}
else
{
strTable.Append("<td align=/"center/"></td>");
}
//訂單價格詳細統計
if (dt.Rows[i]["detailXml"] != DBNull.Value)
{
IList<PriceAndCount> list = GetPriceDetailByXml(dt.Rows[i]["DetailXml"].ToString());
string listPrice = "";
string listCount = "";
foreach (var item in list)
{
listPrice += "¥" + item.Price + "<br/>";
listCount += item.Count + "<br/>";
}
//價格
strTable.Append("<td align=/"center/">" + listPrice + "</td>");
//人數
strTable.Append("<td align=/"center/">" + listCount + "</td>");
}
else
{
strTable.Append("<td align=/"center/"></td>");
strTable.Append("<td align=/"center/"></td>");
}
//訂單號
if (dt.Rows[i]["Id"] != DBNull.Value)
{
strTable.Append("<td align=/"center/">" + dt.Rows[i]["Id"].ToString() + "</td>");
}
else
{
strTable.Append("<td align=/"center/"></td>");
}
//總金額
if (dt.Rows[i]["SumMoney"] != DBNull.Value)
{
strTable.Append("<td align=/"center/">" + dt.Rows[i]["SumMoney"].ToString() + "</td>");
}
else
{
strTable.Append("<td align=/"center/"></td>");
}
strTable.Append("</tr>");
}
}
}
strTable.Append("</table>");
strTable.Append("</td></tr></table>");
//返回值
return strTable.ToString();
}
/// <summary>
/// 獲取訂單詳細信息
/// </summary>
/// <param name="xml"></param>
/// <returns></returns>
private IList<PriceAndCount> GetPriceDetailByXml(string xml)
{
IList<PriceAndCount> items = new List<PriceAndCount>();
if (!string.IsNullOrEmpty(xml))
{
XElement xRoot = XElement.Parse(xml);
var xDetails = GetXElements(xRoot, "row");
foreach (var xdetail in xDetails)
{
items.Add(new PriceAndCount()
{
Count = GetXAttributeValue(xdetail, "PeopleNum"),
Price = GetXAttributeValue(xdetail, "PeoplePrice")
});
}
}
return items;
}
#endregion 導出Execel
#region xml操作
/// <summary>
/// Get XElements
/// </summary>
/// <param name="xElement">parent xElement</param>
/// <param name="xName">xName</param>
/// <returns>XElements</returns>
private IEnumerable<XElement> GetXElements(XElement xElement, string xName)
{
var x = xElement.Elements(xName);
if (x == null)
return new List<XElement>();
return x;
}
/// <summary>
/// Get XAttribute Value
/// </summary>
/// <param name="xElement">XElement</param>
/// <param name="attributeName">Attribute Name</param>
/// <returns></returns>
private string GetXAttributeValue(XElement xElement, string attributeName)
{
return GetXAttributeValue(xElement.Attribute(attributeName));
}
/// <summary>
/// Get XAttribute Value
/// </summary>
/// <param name="XAttribute">xAttribute</param>
/// <returns>Value</returns>
private string GetXAttributeValue(XAttribute xAttribute)
{
if (xAttribute == null)
return string.Empty;
return xAttribute.Value;
}
#endregion
3.打印操作
<script type="text/javascript">
function PrintPage() {
//打印
if (window.print != null) {
$(document.forms[0]).children().each(function() {
if (($(this).attr("id") != "divprint"))
$(this).hide();
});
window.print();
} else {
alert('沒有安裝打印機');
}
//還原頁面內容
//還原頁面內容
window.setTimeout(function() {
$(document.forms[0]).children().each(function() {
$(this).removeAttr("style");
$("#orderMessage").hide();
});
}, 1000);
}
</script>
4.回發到服務段以後,服務端再進行重新請求Response.Redirect(Request.ServerVariables["SCRIPT_NAME"].ToString() + "?StartDate=" + Server.UrlEncode(strStartDate) + "&EndDate=" + Server.UrlEncode(endDate) + "&AgencyName=" + Server.UrlEncode(strAgencyName));(有些變態)