找回密码
 立即注册
查看: 28|回复: 0

c# 实现List 列表数据写入Excel 文件

[复制链接]

15

主题

2

回帖

81

积分

管理员

积分
81
发表于 7 天前 | 显示全部楼层 |阅读模式
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Data.OleDb;
  7. using System.Data;
  8. using System.Configuration;
  9. using System.Web;
  10. using System.IO;
  11. using NPOI;
  12. using NPOI.HSSF.UserModel;
  13. using NPOI.XSSF.UserModel;
  14. using NPOI.SS.UserModel;

  15. namespace COMMON
  16. {
  17.     public class ExcelDataHeader
  18.     {
  19.         public int Index { get; set; }
  20.         public string Title { get; set; }
  21.     }

  22.     public class ExcelDataContext
  23.     {
  24.         public int Index { get; set; }
  25.         public List<ExcelDataRow> Rows { get; set; }
  26.     }

  27.     public class ExcelDataRow
  28.     {
  29.         public int Index { get; set; }
  30.         public string FieldText { get; set;}
  31.     }
  32.     public class ExcelHelper
  33.     {
  34.         public string xlsPath = @"/Upload/";

  35.         public string xlsWebPath = "";

  36.         private IWorkbook ExcelWorkBook = null;

  37.         private ISheet ExcelWorkSheet = null;

  38.         private ICellStyle ExcelCellStyle = null;

  39.         public ExcelHelper()
  40.         {
  41.             xlsPath = ConfigurationManager.AppSettings["UploadPath"].ToString();

  42.             ExcelWorkBook = new HSSFWorkbook();

  43.             ExcelWorkSheet = ExcelWorkBook.CreateSheet("sheet");

  44.             ExcelCellStyle = ExcelWorkBook.CreateCellStyle();

  45.             ExcelWorkSheet.DefaultColumnWidth = 40;

  46.             ExcelWorkSheet.DefaultRowHeight   = 50 * 20;

  47.             ExcelCellStyle.Alignment = HorizontalAlignment.CenterSelection;

  48.             ExcelCellStyle.VerticalAlignment = VerticalAlignment.Center;

  49.             ExcelCellStyle.WrapText = true;

  50.             ExcelCellStyle.BorderBottom = BorderStyle.Thin;

  51.             ExcelCellStyle.BorderLeft = BorderStyle.Thin;

  52.             ExcelCellStyle.BorderRight = BorderStyle.Thin;

  53.             ExcelCellStyle.BorderTop = BorderStyle.Thin;
  54.         }

  55.         public void WriteExcelTitle(List<ExcelDataHeader> HeaderTitle)
  56.         {
  57.             ExcelWorkSheet.CreateRow(0);

  58.             foreach (ExcelDataHeader Header in HeaderTitle.OrderBy(x => x.Index))
  59.             {
  60.                 ExcelWorkSheet.GetRow(0).CreateCell(Header.Index).SetCellValue(Header.Title);

  61.                 ExcelWorkSheet.GetRow(0).Cells[Header.Index].CellStyle = ExcelCellStyle;
  62.             }      
  63.         }

  64.         public void WriteExcelContext(List<ExcelDataContext> ContextList)
  65.         {
  66.             foreach(ExcelDataContext Context in ContextList)
  67.             {
  68.                 ExcelWorkSheet.CreateRow(Context.Index);

  69.                 foreach(ExcelDataRow Row in Context.Rows)
  70.                 {
  71.                     if (Row.FieldText == null) Row.FieldText = "";

  72.                     ExcelWorkSheet.GetRow(Context.Index).CreateCell(Row.Index).SetCellValue(Row.FieldText);

  73.                     ExcelWorkSheet.GetRow(Context.Index).Cells[Row.Index].CellStyle = ExcelCellStyle;
  74.                 }
  75.             }
  76.         }

  77.         public void SaveExcelFile(string _BaseXlsPath = null)
  78.         {
  79.             string BaseXlsPath = _BaseXlsPath;

  80.             if (_BaseXlsPath == null)
  81.             {
  82.                 BaseXlsPath = System.Web.HttpContext.Current.Server.MapPath(xlsPath);
  83.             }

  84.             string BaseXlsFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";

  85.             xlsWebPath = xlsPath + BaseXlsFileName;

  86.             string ExcelFilePath = BaseXlsPath + BaseXlsFileName;

  87.             FileStream file = new FileStream(ExcelFilePath, FileMode.Create);

  88.             ExcelWorkBook.Write(file,true);

  89.             file.Close();
  90.         }

  91.         public string GetExcelWebPath()
  92.         {
  93.             return xlsWebPath;
  94.         }
  95.     }
  96. }
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )

GMT+8, 2024-12-5 10:16 , Processed in 0.048702 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表