.net core 基于NPOI 的excel导出类,支持自定义导出哪些字段_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段

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

 2017/9/16 18:26:55  张晓群  程序员俱乐部  我要评论(0)
  • 摘要:///<summary>///导出Excel///</summary>///<paramname="lists"></param>///<paramname="head">英文中文列名对照</param>///<paramname="workbookFile">保存路径</param>publicstaticvoidgetExcel<T>(List<T>lists
  • 标签:.net excel net 自定义
class="brush:csharp;gutter:true;">/// <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;
            }
        }

  

上一篇: WPF的TextBox水印效果详解 下一篇: 没有下一篇了!
发表评论
用户名: 匿名