您的位置:首页 > 编程语言 > C#

C# NPOI 导出Execl 工具类

2016-08-30 13:56 399 查看
NPOI 导出Execl 自己单独工具类

详见代码

/// <summary>
/// 将list 集合导处 Execl
/// </summary>
/// <param name="list">泛型集合</param>
/// <param name="strHeaderName">表头名字</param>
/// <returns></returns>
public static MemoryStream ExprotToList<T>(List<T> list, string strHeaderName)
{

HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet();

//创建样式

ICellStyle cellStyle = workbook.CreateCellStyle();
IDataFormat dataFormat = workbook.CreateDataFormat();
cellStyle.DataFormat = dataFormat.GetFormat("yyyy-MM-dd");

//IRow headerRow = sheet.CreateRow(0);
//headerRow.CreateCell(0).SetCellValue(strHeaderName);

//表头样式
IRow headerRow = sheet.CreateRow(0);
headerRow.HeightInPoints = 25;
headerRow.CreateCell(0).SetCellValue(strHeaderName); //填充填表

ICellStyle headerStyle = workbook.CreateCellStyle();
headerStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
IFont font = workbook.CreateFont();
font.FontHeightInPoints = 20;
font.Boldweight = 700;
headerStyle.SetFont(font);

headerRow.GetCell(0).CellStyle = headerStyle;
sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, list[0].GetType().GetProperties().Length - 1));

IRow rows = sheet.CreateRow(1);

//获取list属性值
PropertyInfo[] propertyInfo = list[0].GetType().GetProperties();

#region 获取 实体 中的 [DisplayName("姓名")]
{
//获取 实体 中的 [DisplayName("姓名")]

//Type entity = list[0].GetType();

//for (int i = 0; i < propertyInfo.Length; i++)
//{
//    var pName = entity.GetProperty(propertyInfo[i].Name.ToString()).GetCustomAttribute<DisplayNameAttribute>();

//    rows.CreateCell(i).SetCellValue(pName.DisplayName);
//}

}
#endregion

#region 获取实体的属性值
{

for (int i = 0; i < propertyInfo.Length; i++)
{
rows.CreateCell(i).SetCellValue(propertyInfo[i].Name.ToString());
}
}
#endregion

//填充内容
int propertyIndex = 2;

foreach (var item in list)
{
IRow row = sheet.CreateRow(propertyIndex);

for (int i = 0; i < propertyInfo.Length; i++)
{
var obj = propertyInfo[i].GetValue(item, null);

row.CreateCell(i).SetCellValue(obj.ToString());
}

propertyIndex++;
}

//宽度自适应
for (int i = 0; i < list.Count; i++)
{
sheet.AutoSizeColumn(i);
}

using (MemoryStream ms = new MemoryStream())
{
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
return ms;
}

}


View Code

效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: