導出操作

項目總結:
1,自動增加序號 <%# Container.ItemIndex+1+(pageIndex-1)*PAGESIZE %>

Table導出到Excel時設置Excel單元格格式(文本、數字等)

1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 數字:vnd.ms-excel.numberformat:#,##0.00
4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
5) 百分比:vnd.ms-excel.numberformat: #0.00%
這 些格式,怎麼去把這些格式添加到cell中呢?很簡單,我們只需要把樣式添加 到對應的標籤對(即閉合標籤)即可。如<td></td>,給標籤對<td></td>添加樣 式,style="vnd.ms-excel.numberformat:@" 

如<td></td>, 給標籤對<td></td>添加樣式,如 下: <td style="vnd.ms-excel.numberformat:@">410522198402161 833</td> 

 


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));(有些變態)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章