• ExportHandler.ashx


    using KYZWeb.Common;
    using Liger.Data;
    //using Microsoft.Office.Interop.Excel;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Web;
     

    namespace KYZWeb.Modules.DeviceMan
    {
        /// <summary>
        /// ExportHandler 的摘要说明
        /// </summary>
        public class ExportHandler : IHttpHandler
        {

            public static DbContext DB = DbHelper.Db;
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";

                string startdatetime = context.Request.Params["startdatetime"];
                string enddatetime = context.Request.Params["enddatetime"];
                string user_name = context.Request.Params["user_name"];
                StringBuilder sql = new StringBuilder();
                sql.Append(@"   select  * ");
                sql.Append("  from dbo.vi_card_run WHERE 1=1");
                if (!string.IsNullOrEmpty(startdatetime))
                {
                    sql.Append(" and card_datetime >= '" + startdatetime + "'");
                }
                if (!string.IsNullOrEmpty(enddatetime))
                {
                    sql.Append(" and card_datetime <= '" + enddatetime + "'");
                }
                if (!string.IsNullOrEmpty(user_name))
                {
                    sql.Append(" and user_name like '%" + user_name + "%'");
                }
                sql.Append(" order by card_datetime desc");
                //创建command
                var dt = DB.Db.ExecuteDataSet(CommandType.Text, sql.ToString()).Tables[0];

                StringWriter sw = new StringWriter();
                //sw.WriteLine("姓名\t工号\t打卡时间\t打卡地点\t打卡设备");
                sw.WriteLine("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
                sw.WriteLine("<head>");
                sw.WriteLine("<!--[if gte mso 9]>");
                sw.WriteLine("<xml>");
                sw.WriteLine(" <x:ExcelWorkbook>");
                sw.WriteLine("  <x:ExcelWorksheets>");
                sw.WriteLine("   <x:ExcelWorksheet>");
                sw.WriteLine("    <x:Name>" + "sheetName" + "</x:Name>");
                sw.WriteLine("    <x:WorksheetOptions>");
                sw.WriteLine("      <x:Print>");
                sw.WriteLine("       <x:ValidPrinterInfo />");
                sw.WriteLine("      </x:Print>");
                sw.WriteLine("    </x:WorksheetOptions>");
                sw.WriteLine("   </x:ExcelWorksheet>");
                sw.WriteLine("  </x:ExcelWorksheets>");
                sw.WriteLine("</x:ExcelWorkbook>");
                sw.WriteLine("</xml>");
                sw.WriteLine("<![endif]-->");
                sw.WriteLine("</head>");
                sw.WriteLine("<body>");
                sw.WriteLine("<table border='1'>");
                sw.WriteLine(" <tr >");
                sw.WriteLine("  <td><strong>姓名</strong></td>");
                sw.WriteLine("  <td><strong>工号</strong></td>");
                sw.WriteLine("  <td><strong>打卡时间</strong></td>");
                sw.WriteLine("  <td><strong>打卡地点</strong></td>");
                sw.WriteLine("  <td><strong>打卡设备</strong></td>");
                
                sw.WriteLine(" </tr>");

                foreach (DataRow dr in dt.Rows)
                {
                    //sw.WriteLine(dr["user_name"] + "\t" + dr["user_code"] + "\t" + dr["card_datetime"]+"\t"+dr["card_address"]+"\t"+dr["card_device_name"]);
                    sw.WriteLine(" <tr>");
                    sw.WriteLine("  <td>" + dr["user_name"] + "</td>");
                    sw.WriteLine("  <td>" + dr["user_code"] + "</td>");
                    sw.WriteLine("  <td>" + dr["card_datetime"] + "</td>");
                    sw.WriteLine("  <td>" + dr["area_name"] + "</td>");
                    sw.WriteLine("  <td>" + dr["device_name"] + "</td>");
                
                    sw.WriteLine(" </tr>");
                }
                sw.WriteLine("</table>");
                sw.WriteLine("</body>");
                sw.WriteLine("</html>");
                sw.Close();
                context.Response.Clear();
                context.Response.Buffer = true;
                context.Response.Charset = "UTF-8";

                context.Response.AddHeader("Content-Disposition", "attachment; filename=" + "card" + ".xls");
                context.Response.ContentType = "application/ms-excel";
                context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                context.Response.Write(sw);
                context.Response.End();
                //context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                //context.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("card", System.Text.Encoding.UTF8) + ".xls");
                //context.Response.ContentType = "application/ms-excel";
                //context.Response.Write(sw);
                //context.Response.End();




                //DataTabletoExcel(dt, "C:\\中国.XLS");   //调用自定义的函数,当然输出文件你可以随便写
            }

            public static void DataTabletoExcel(System.Data.DataTable tmpDataTable, string strFileName)
            {

                if (tmpDataTable == null)

                    return;

                int rowNum = tmpDataTable.Rows.Count;

                int columnNum = tmpDataTable.Columns.Count;

                int rowIndex = 1;

                int columnIndex = 0;



                //Application xlApp = new ApplicationClass();
            

                //xlApp.DefaultFilePath = "";

                //xlApp.DisplayAlerts = true;

                //xlApp.SheetsInNewWorkbook = 1;

                //Workbook xlBook = xlApp.Workbooks.Add(true);



                ////将DataTable的列名导入Excel表第一行

                //foreach (DataColumn dc in tmpDataTable.Columns)
                //{

                //    columnIndex++;

                //    xlApp.Cells[rowIndex, columnIndex] = dc.ColumnName;

                //}



                ////将DataTable中的数据导入Excel中

                //for (int i = 0; i < rowNum; i++)
                //{

                //    rowIndex++;

                //    columnIndex = 0;

                //    for (int j = 0; j < columnNum; j++)
                //    {

                //        columnIndex++;

                //        xlApp.Cells[rowIndex, columnIndex] = tmpDataTable.Rows[i][j].ToString();

                //    }

                //}

                ////xlBook.SaveCopyAs(HttpUtility.UrlDecode(strFileName, System.Text.Encoding.UTF8));

                //xlBook.SaveCopyAs(strFileName);

            }



            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }

    萌橙 你瞅啥?
  • 相关阅读:
    JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素
    ASP.NET MVC的运行机制--url的全局分析
    ASP.NET MVC
    [Android 新特性] 15项大改进 Android 4.4新特性解析
    [Android Pro] activity-alias的使用
    [Android Pro] 控制硬加速 hardwareAccelerated 在3.0才有的
    [Android Pro] Android中IntentService的原理及使用
    [SQLite] SQLite学习手册(数据库和事务)
    [Android UI] ActionBar 自定义属性
    [Android Memory] App调试内存泄露之Context篇(下)
  • 原文地址:https://www.cnblogs.com/daimaxuejia/p/6689706.html
Copyright © 2020-2023  润新知