项目总结:
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));(有些变态)