asp.net NPOI 导出
来源:互联网 发布:拓扑算法 编辑:程序博客网 时间:2024/06/05 08:13
在这里导出用的是NPOI,NPOI:是对Office进行操作的一个类库框架
XSSFWorkbook对应的就是Excel文件 工作簿,
XSSFSheet对应的就是Excel中sheet工作表,
XSSFCell对应的就是Excel的单元格,
XSSFRow对应的就是Excel的行。
例:
/// <summary>
/// 导出模版 /// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list">要导出的信息</param>
/// <param name="listName">导出标题</param>
/// <param name="rowTitles">导出对应字段</param>
/// <returns></returns>
public MemoryStreamExportExcel<T>(IList<T> list, string[] listName, string[] rowTitles, string[] infoListName)
{
//创建一个内存中的Excel 只是还没有写到硬盘上
var workbook =new XSSFWorkbook();
//创建一张sheet工作表
var sheet = workbook.CreateSheet();
//创建工作表中的第一行
var headerRow = sheet.CreateRow(0);
//申明一个单元格的样式
var cellStyle = workbook.CreateCellStyle();
//设置单元格为锁定状态
cellStyle.IsLocked = true;
var cellStyleNo = workbook.CreateCellStyle();
//设置单元格为不锁定状态
cellStyleNo.IsLocked = false;
var format = workbook.CreateDataFormat();
//把单元格设置格式为文本格式
cellStyle.DataFormat = format.GetFormat("@");
cellStyleNo.DataFormat = format.GetFormat("@");
//给所有行的指定第一列创建宽
sheet.SetColumnWidth(0, 20 * 256);
//在申明的行中创建第一列
var headerRowCell = headerRow.CreateCell(0);
//为行中第一列填充数据
headerRowCell.SetCellValue("序列号");
//为行中第一列赋值样式
headerRowCell.CellStyle = cellStyle;#region 循环填充列名
int intRowTitles = listName.Count();
int intInfoTitles = infoListName.Count();//基本信息列
//订单
for (var i = 1; i <= intRowTitles; i++)
{
sheet.SetColumnWidth(i, 20 * 256);
headerRowCell = headerRow.CreateCell(i);
headerRowCell.SetCellValue(listName[i - 1]);
headerRowCell.CellStyle = cellStyle;
}#endregion
/*
CreateFreezePane的参数作一下说明:
第一个参数表示要冻结的列数;
第二个参数表示要冻结的行数,这里只冻结列所以为0;
第三个参数表示右边区域可见的首列序号,从1开始计算;
第四个参数表示下边区域可见的首行序号,也是从1开始计算,这里是冻结列,所以为0;*/
sheet.CreateFreezePane(0, 1, 0, 1);
#region循环填充内容数据
object value = null;
int RowId = 0;
if (list != null && list.Count() > 0)
{
Type type = list[0].GetType();
foreach (var itemin list)
{
RowId++;
var row = sheet.CreateRow(RowId);
intRowTitles = rowTitles.Count();
row.CreateCell(0).SetCellValue(RowId.ToString());
row.GetCell(0).CellStyle = cellStyle;
for (var i = 1; i <= intRowTitles; i++)
{
if (rowTitles[i - 1] == "CompanyName")//快递公司字段可以输入
{
row.CreateCell(i).SetCellValue("");
row.CreateCell(i).CellStyle = cellStyleNo;
}
else if ( rowTitles[i - 1] == "BillNo")//快递编号字段可以输入
{
row.CreateCell(i).SetCellValue("");
row.CreateCell(i).CellStyle = cellStyleNo;
}
else
{
value = type.GetProperty(rowTitles[i - 1]).GetValue(item);
if (value == null || value.ToString().Equals("1970/1/1 0:00:00") || value.ToString().Equals("0001/1/1 0:00:00"))
{
row.CreateCell(i).SetCellValue("");
}
else if (value.GetType().Name == "Decimal")
{
row.CreateCell(i).SetCellValue(value.ToDecimalF());
}
else
{
row.CreateCell(i).SetCellValue(value.ToString());
}
//此处应用style
row.GetCell(i).CellStyle = cellStyle;}
}
}
}#endregion
//设置保护密码
sheet.ProtectSheet("MD5");
var output = new MemoryStream();
workbook.Write(output);
return output;}
- asp.net NPOI 导出
- ASP.NET NPOI导出Excel
- ASP.Net使用NPOI导出Excel
- Asp.net NPOI导入导出Excel表格
- asp.net用NPOI导出Excel
- ASP.NET基于NPOI导出数据
- ASP.NET使用NPOI类库导出Excel
- asp.net 利用NPOI导出数据到Excel模版
- ASP.NET使用NPOI类库导出Excel(收藏)
- ASP.NET 中 NPOI & LinqToSql 使用模板 导出 Excel
- ASP.NET使用NPOI加载Excel模板并导出下载
- ASP.NET NPOI Excel导入、导出,高级、全面、总结版
- asp.net中利用NPOI导出数据到excel中
- ASP.Net MVC利用NPOI导入导出Excel - RuleLu
- C#利用NPOI导出Excel-ASP.NET MVC示例
- Asp.net中利用NPOI做Excel导出功能
- asp.net 使用NPOI实现导出Excel功能
- asp.net 利用NPOI导出Excel通用类
- 在windows系统中查找端口被哪个应用程序给占用了
- Scala协变逆变上界下界
- php mysql数据库备份1
- 使用UDP建立群聊系统
- 剑指Offer:包含min函数的栈
- asp.net NPOI 导出
- HttpClientHelper_PushClient
- Fragment取消预加载
- ftp ssh http telnet https服务及端口
- 南阳理工ACM596
- "svn: E200033: database is locked"解决办法。(转)
- Scala Actor并发编程
- linux桌面操作系统安装eagle
- 【CDOJ 1355】柱爷与三叉戟不得不说的故事 【状压DP+子集枚举】