zoukankan      html  css  js  c++  java
  • 将list输出成Excel到指定目录

                System.Data.DataTable dtSource = ToDataTable<EmpExtension>(empList);  //数据源
    
                context.Response.ContentType = "application/vnd.ms-excel";
                context.Response.ContentEncoding = Encoding.UTF8;
                context.Response.Charset = "UTF-8";
                context.Response.AppendHeader("Content-Disposition",
                    "attachment;filename=" + HttpUtility.UrlEncode(strFileName, Encoding.UTF8));  //路径:HttpUtility.UrlEncode(strFileName, Encoding.UTF8)
    
    
                HSSFWorkbook workbook = new HSSFWorkbook();
                HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet();
    
                //填充表头
                HSSFRow dataRow = (HSSFRow)sheet.CreateRow(0);
                foreach (DataColumn column in dtSource.Columns)
                {
                    dataRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
                }
    
    
                //填充内容
                for (int i = 0; i < dtSource.Rows.Count; i++)
                {
                    dataRow = (HSSFRow)sheet.CreateRow(i + 1);
                    for (int j = 0; j < dtSource.Columns.Count; j++)
                    {
                        dataRow.CreateCell(j).SetCellValue(dtSource.Rows[i][j].ToString());
                    }
                }
    
                using (MemoryStream ms = new MemoryStream())
                {
                    using (FileStream fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write))
                    {
                        workbook.Write(fs);
                    }
                    ms.Flush();
    
                    context.Response.BinaryWrite(ms.GetBuffer());
                }

    这里使用了NPOI,还有context可以使用HttpContext.Current代替。strFileName是自定义的路径

    另外,将list转化成DataTable的方法:

    public static DataTable ToDataTable<T>(List<T> items)
            {
                DataTable dataTable = new DataTable();
    
                PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
                foreach (PropertyInfo prop in Props)
                {
                    dataTable.Columns.Add(prop.Name);
                }
    
                foreach (T obj in items)
                {
                    var values = new object[Props.Length];
                    for (int i = 0; i < Props.Length; i++)
                    {
                        values[i] = Props[i].GetValue(obj, null);
                    }
                    dataTable.Rows.Add(values);
                }
    
                return dataTable;
            }
    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    C语言第九节 函数指针
    C语言第七节 指针
    C语言第五节 函数
    C语言第六节 结构体
    C语言第四节 数组
    C语言第三节 循环结构
    C语言第二节 分支结构
    ARC、MRC混编
    Git 和 SVN之间的五个基本区别
    KZ--NSString、NSMutableString
  • 原文地址:https://www.cnblogs.com/AduBlog/p/14688475.html
Copyright © 2011-2022 走看看