动态列 Excel 导出
/// <summary>
/// 导出数据通用属性 需在属性进行标记
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Parameter | AttributeTargets.Property)]
public class ExportToExcelAttribute : Attribute
{
private string _columnName;
private int _width = 19;
public ExportToExcelAttribute(string columnName)
{
this._columnName = columnName;
}
public ExportToExcelAttribute(string columnName, int columnWidth)
{
this._columnName = columnName;
this._width = columnWidth;
}
public string ColumnName { get { return _columnName; } }
public int ColumnWidth { get { return _width; } }
}
public class ClassA
{
int id =0;
string name=string.Empty;
[ExportToExcel("ID", 25)]
public int Id
{
get { return Id; }
set { Id= value; }
}
[ExportToExcel("Name", 25)]
public int Id
{
get { return Id; }
set { Id= value; }
}
}
public class ExcelHelper
{
public void CreateReportToExcel()
{
var data = new List<ClassA>()
{
new ClassA(){Id=1,Name="张三“},new ClassA(){Id=2,Name="张四”}
};
var expressList = new List<Expression<Func<ClassA, object>>>() {{m=>m.Id},{m=>m.Name}};
Aspose.Cells.Workbook workbook=GetExportWorkbook<ClassA>(expressList,data,"ExcelSheet1");
Response.BinaryWrite(workbook.SaveToStream().ToArray());
Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + HttpUtility.UrlEncode("" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls", System.Text.Encoding.UTF8) + "\"");
Response.ContentType = "application/ms-excel";
}
/// <summary>
/// 数据导出到excel通用方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="expressList"></param>
/// <param name="datas"></param>
/// <param name="WorksheetName"></param>
/// <returns></returns>
public static Workbook GetExportWorkbook<T>(List<Expression<Func<T, object>>> expressList, List<T> datas, string WorksheetName)
{
List<PropertyInfo> proList = new List<PropertyInfo>();//字段属性集合
PropertyInfo pro;
ExportToExcelAttribute att;
Workbook work = new Workbook();
work.Worksheets.Clear();
Worksheet sheet = null;
if (datas.Count > 0)
{
work.Worksheets.Add(WorksheetName);
sheet = work.Worksheets[0];
sheet.Cells.SetRowHeight(0, 30);
int i = 0;
foreach (var item in expressList)
{
pro = GetProperty(item);
proList.Add(pro);
att = pro.GetCustomAttribute<ExportToExcelAttribute>();
sheet.Cells[0, i++].PutValue(att.ColumnName);
sheet.Cells.SetColumnWidth(i - 1, att.ColumnWidth);
}
//单元格
Cells cells = sheet.Cells;
Style style1 = work.Styles[work.Styles.Add()];
style1.HorizontalAlignment = TextAlignmentType.Center;
style1.Font.Name = "宋体";
style1.Font.Size = 11;
style1.IsLocked = true;
style1.Font.IsBold = true;
int n = 1;
foreach (T item in datas)
{
int j = 0;
foreach (var p in proList)
{
sheet.Cells[n, j++].PutValue(p.GetValue(item));
}
n += 1;
}
}
return work;
}
}
动态列 Excel 导出的更多相关文章
- Java实现大批量数据导入导出(100W以上) -(三)超过25列Excel导出
前面一篇文章介绍大数据量导出实现: Java实现大批量数据导入导出(100W以上) -(二)导出 这篇文章在Excel列较少时,按以上实际验证能很快实现生成.但如果列较多时用StringTemplat ...
- C# 使用Epplus导出Excel [2]:导出动态列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- 数据导出Excel,动态列
今天碰到一个需求,要求将用户回答的问卷及问题导出Excel表格,问卷对应的问题数量不一致,需要动态添加列表头,简单记录. 要导出Excel需要添加poi.jar包 用户-问卷实体(固定列): pack ...
- 【C#】Excel导出合并行和列并动态加载行与列
简单的Excel导出比较好做,只要设置表头,循环在表格中赋值添加数据即可,但是如果表头是不固定的,并且个数是不确定的,这就需要根据查询出数据的特点来添加导出了. 导出效果图: 如上图所示,商品的个数是 ...
- 记React+.NetCore API实现动态列导出
1.效果演示 2.用到的第三方类库 前端:React,Dva,Antd 后端:ASP.NET CORE,System.Linq.Dynamic.Core,EPPlus.Core 3.基本思路 第一:E ...
- easypoi导出动态表头excel
easypoi导出动态表头excel 1: springBoot项目maven依赖: <dependency> <groupId>cn.afterturn</groupI ...
- 数据的动态合并和导出至EXCEL
最近一段时间都在处理数据的动态合并和导出EXCEL的问题,写个demo记录下,希望和我碰到同样问题的博友可以顺利解决:后面会提供demo下载链接. (VS2012,ASP.NET) 一.主要解决以下问 ...
- Java实现PDF和Excel生成和数据动态插入以及导出
一.序言 Excel.PDF的导出.导入是我们工作中经常遇到的一个问题,刚好今天公司业务遇到了这个问题,顺便记个笔记以防下次遇到相同的问题而束手无策. 公司有这么两个需求: 需求一.给了一个表单,让把 ...
- asp.net(C#) Excel导出类 导出.xls文件
---恢复内容开始--- using Microsoft.Office.Interop.Excel; 针对office 2003需添加引用Microsoft Excel 11.0 Obje ...
随机推荐
- lerna基本试用
安装 yarn global add lerna or npm install -g lerna 基本项目 初始化 git init platform cd platform lerna init 效 ...
- 【小白的java成长系列】——windows下搭建和配置java环境
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/enson16855/article/details/25967851 基于非常多原因,还是得说说ja ...
- FastAdmin 的前端环境怎么安装?
FastAdmin 的前端环境怎么安装? 安装 Git 安装 Node.js 安装 cnpm 安装 bower 开始安装 FastAdmin 的前端组件 bower install bower upd ...
- Chrome Developer Tools 中的 Preview 不显示 HTML 的问题
Chrome Developer Tools 中的 Preview 不显示 HTML 的问题 最近升级到 Chrome V64,发现 Chrome Developer Tools 中的 Preview ...
- gridview 绑定多个格式相同的数据源(数据查询合并)
在做项目时,要求在同一个GridView中同时显示不同分组中的前若干条数据 几个技术要点: 1.数据分组,本方法中未用group by 2.几个结果格式相同的查询合并绑定 3.取查询结果的前或后若干条 ...
- MyEclipse下Tomcat无法部署项目 finish按钮无法点击
问题描述:MyEclipse环境下,使用Tomcat进行项目部署时,无法部署项目,finish按钮无法点击. 问题原因:Context-root丢失 解决办法:右击项目->properties- ...
- Hadoop编译安装
本文转载自:http://www.cnblogs.com/shishanyuan/p/4701646.html 1.编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载m ...
- (转)js弹窗&返回值(window.open方式)
本文转载自:http://hi.baidu.com/z57354658/item/5d5e26b8e9f42fa7ebba93d4 js弹窗&返回值(window.open方式) test.h ...
- mysql-5.6.20主从同步错误之Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND
mysql-5.6.20主从同步错误之Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND 方法一: 1.Error_code: 1032; ha ...
- Loadrunner11在新建Microsoft Word 报告时提示指定的转换无效
HP Loadrunner11中文教程的学习基本已经结束,最后困扰我的就是这个在创建Microsoft Word 报告时不停的提示“指定的转换无效”的问题.在网上搜索了好长时间,好多朋友回答说没有生成 ...