从数据库中导出excel报表
通常需要将后台数据库中的数据集或者是其他列表等导出excel 报表,这里主要引用了Apose.cells dll 类库,
(1)直接上主要代码:
protected void txtExport_Click(object sender, EventArgs e) {
try {
// 获取测试商品报表
IList<ProductEntity> pList = ProductBLL.getProductList();
// 导出到Excel中
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
Cells cells = sheet.Cells;//单元格
for (int i = 0; i < 3; i++) {
cells.SetColumnWidth(i, 20);
}
cells[1, 0].PutValue("商品序号");
cells[1, 1].PutValue("商品名称");
cells[1, 2].PutValue("描述");
for (int i = 0; i < pList.Count; i++) {
var p = pList[i];
cells[2 + i, 0].PutValue(p.Number);
cells[2 + i, 1].PutValue(p.Name);
cells[2 + i, 2].PutValue(p.Description);
}
string fileName = "商品列表报表" + DateTime.Now.ToString("yyyy.MM.dd.HH.mm.ss.ms") + ".xls";
string saveFileName = HttpContext.Current.Server.MapPath(@"\ExportFile\" + fileName);
workbook.Save(saveFileName);
Label1.Text = "导出报表成功!";
}
catch (Exception ex) {
Label1.Text = "导出报表失败,原因:" + ex.Message; }
}
(2)获取ProductList 的方法getProductList():
public static IList<ProductEntity> getProductList(){
IList<ProductEntity> productList = new List<ProductEntity>();
DataTable dt = ProductDAL.getProductList();
if(dt!=null && dt.Rows.Count>0)
{
productList =DatatableToObject.ConvertToList<ProductEntity>(dt);
}
return productList;
}
(3) 顺便介绍比较实用用的DataToObject.ConvertToList<T>() 方法,可以直接将从数据库中读取的DataTable 转化成列表List<T>,
最近才在上面写文章,不会自动对齐格式哈。
public class DatatableToObject {
public static T ConvertToObject<T>(DataRow row) where T : new() {
System.Object obj = new T();
if (row != null) {
DataTable dataTable = row.Table;
GetObject(dataTable.Columns, row, obj);
}
if (obj != null && obj is T) {
return (T)obj;
}
else {
return default(T);
}
}
private static void GetObject(DataColumnCollection cols, DataRow dr, System.Object obj)
{ Type type = obj.GetType();
PropertyInfo[] pros = type.GetProperties();
foreach (PropertyInfo pro in pros) {
if (cols.Contains(pro.Name))
{
if ((pro.PropertyType).Name.ToLower() == "string")
pro.SetValue(obj, dr[pro.Name] == DBNull.Value ? "" : dr[pro.Name].ToString(), null);
else
pro.SetValue(obj, dr[pro.Name] == DBNull.Value ? null : dr[pro.Name], null);
}
}
}
public static List<T> ConvertToList<T>(DataTable dataTable) where T : new()
{ List<T> list = new List<T>();
foreach (DataRow row in dataTable.Rows) {
T obj = ConvertToObject<T>(row);
list.Add(obj); }
return list;
}
}
(4) 部分运行截图:


从数据库中导出excel报表的更多相关文章
- 从oracle数据库中导出excel问题导致乱码的问题
使用plsqldev工具将oracle的查询结果导出为excel,结果可以成功导出,但是使用libreoffice进行查看时,有好多记录都是空的. 使用python进行导出(openpyxl模块进行e ...
- 用BCP从SQL Server 数据库中导出Excel文件
BCP(Bulk Copy Program)是一种简单高效的数据传输方式在SQL Server中,其他数据传输方式还有SSIS和DTS. 这个程序的主要功能是从数据库中查询Job中指定step的执行信 ...
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- Atitit.导出excel报表的设计与实现java .net php 总
Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...
- Atitit.导出excel报表的设计与实现java .net php 总结
Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...
- asp.net中导出Excel的方法
一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...
- poi导出Excel报表多表头双层表头、合并单元格
效果图: controller层方法: /** * * 导出Excel报表 * @param request * @return * */ @ ...
- java导出excel报表
1.java导出excel报表: package cn.jcenterhome.util; import java.io.OutputStream;import java.util.List;impo ...
- 根据模板导出Excel报表并生成多个Sheet页
因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为 根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...
随机推荐
- UE4 Plugins插件分享:
嘿,基佬你掉的插件! https://github.com/EverNewJoy/VictoryPlugin VictoryBPLibrary ---- 由活跃于 UE4 社区的某基佬 Rama 实现 ...
- 关于Android 应用保活
通常情况下 , 公司需要让自己的产品在用户的手机中尽可能存活长的时间,包括不受大数字,手动清理后台等情况的影响.这里给出一种方式 就是 双进程守护: 模型如图所示: 两个service通过aidl的方 ...
- IE8下ajax请求失败的解决方案
今天发现IE9以下的浏览器,ajax请求返回数据异常研究半天发现是type参数未设置,由于默认方式是Get,添加上type:“post”就恢复正常了
- Unity3d游戏场景优化杂谈(3)
LOD(Level-of-detail)是最常用的游戏优化技术 .如果你的程序可以定制开发应用LOD的模块,当然 是很美好的事情.不过如果没有也没关系,大家可以使用UniLOD这个第三方的LOD插件. ...
- cannot load flash device description
http://www.openedv.com/forum.php?mod=viewthread&tid=50048&highlight=MDK%D3%C3JTAG%2B%B7%C2%D ...
- 使用html模板
创建html---点击next--选择写好的模板
- yii 初步安装
第一步: window下点击>开始 >运行CMD命令. 第二步:进入Yiic文件的目录 (例如在D盘里面 D:/yii/framework) 第三步:D:\yii\framework& ...
- Outline of Apache Jena Notes
1 description 这篇是语义网应用框架Apache Jena学习记录的索引. 初始动机见Apache Jena - A Bootstrap 2 Content 内容组织基本上遵循Jena首页 ...
- 使用navigator.geolocation来获取用户的地理位置信息
使用navigator.geolocation来获取用户的地理位置信息 W3C 中新添加了一个名为 Geolocation的 API 规范,Geoloaction API的作用就是通过浏览器获取用户的 ...
- C(++) Websocket实现扫码二维码登录---GoEasy
最近在做一个扫码登录功能,为此我还在网上搜了一下关于微信的扫描登录的实现方式.当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些. 要实现扫码登录我们需要 ...