码迷,mamicode.com
首页 > Web开发 > 详细

.net core 基于NPOI 的excel导出类,支持自定义导出哪些字段

时间:2017-09-16 19:09:53      阅读:1111      评论:0      收藏:0      [点我收藏+]

标签:column   header   contain   write   net   data   message   excel导出   var   

/// <summary>  
        /// 导出Excel  
        /// </summary>  
        /// <param name="lists"></param>  
        /// <param name="head">英文中文列名对照</param>  
        /// <param name="workbookFile">保存路径</param>  
        public static void getExcel<T>(List<T> lists, Dictionary<string,string> head, string workbookFile)
        {
            try
            {

                XSSFWorkbook workbook = new XSSFWorkbook();
                using (MemoryStream ms = new MemoryStream())
                {
                    var sheet = workbook.CreateSheet();
                    var headerRow = sheet.CreateRow(0);
                    bool h = false;
                    int j = 1;
                    Type type = typeof(T);
                    PropertyInfo[] properties = type.GetProperties();
                    foreach (T item in lists)
                    {
                        var dataRow = sheet.CreateRow(j);
                        int i = 0;
                        foreach (PropertyInfo column in properties)
                        {
                            if (!h)
                            {
                                if (head.Keys.Contains(column.Name))
                                {
                                    headerRow.CreateCell(i).SetCellValue(head[column.Name] == null ? column.Name : head[column.Name].ToString());
                                    dataRow.CreateCell(i).SetCellValue(column.GetValue(item, null) == null ? "" : column.GetValue(item, null).ToString());

                                }
                                else
                                {
                                    i -= 1;
                                }

                            }
                            else
                            {
                                if (head.Keys.Contains(column.Name))
                                {
                                    dataRow.CreateCell(i).SetCellValue(column.GetValue(item, null) == null ? "" : column.GetValue(item, null).ToString());
                                }
                                else
                                {
                                    i -= 1;
                                }

                            }
                            i++;
                        }
                        h = true;
                        j++;
                    }
                   
                    workbook.Write(ms);
                    using (FileStream fs = new FileStream(workbookFile, FileMode.Create, FileAccess.Write))
                    {
                        byte[] data = ms.ToArray();
                        fs.Write(data, 0, data.Length);
                        fs.Flush();
                    }
                    sheet = null;
                    headerRow = null;
                    workbook = null;
                }
            }
            catch (Exception ee)
            {
                string see = ee.Message;
            }
        }

  

.net core 基于NPOI 的excel导出类,支持自定义导出哪些字段

标签:column   header   contain   write   net   data   message   excel导出   var   

原文地址:http://www.cnblogs.com/hzzxq/p/7531790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!