通常需要将后台数据库中的数据集或者是其他列表等导出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报表的更多相关文章

  1. 从oracle数据库中导出excel问题导致乱码的问题

    使用plsqldev工具将oracle的查询结果导出为excel,结果可以成功导出,但是使用libreoffice进行查看时,有好多记录都是空的. 使用python进行导出(openpyxl模块进行e ...

  2. 用BCP从SQL Server 数据库中导出Excel文件

    BCP(Bulk Copy Program)是一种简单高效的数据传输方式在SQL Server中,其他数据传输方式还有SSIS和DTS. 这个程序的主要功能是从数据库中查询Job中指定step的执行信 ...

  3. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  4. Atitit.导出excel报表的设计与实现java .net php 总

    Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...

  5. Atitit.导出excel报表的设计与实现java .net php 总结

    Atitit.导出excel报表的设计与实现java .net php 总结 1. 导出报表 表格的设计要素1 1.1. 支持通用list<Map>转换1 1.2. 对于空列是否输出1 1 ...

  6. asp.net中导出Excel的方法

    一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...

  7. poi导出Excel报表多表头双层表头、合并单元格

    效果图: controller层方法: /**     *      * 导出Excel报表     * @param request     * @return     *      */    @ ...

  8. java导出excel报表

    1.java导出excel报表: package cn.jcenterhome.util; import java.io.OutputStream;import java.util.List;impo ...

  9. 根据模板导出Excel报表并生成多个Sheet页

    因为最近用报表导出比较多,所有就提成了一个工具类,本工具类使用的场景为  根据提供的模板来导出Excel报表 并且可根据提供的模板Sheet页进行复制 从而实现多个Sheet页的需求, 使用本工具类时 ...

随机推荐

  1. Ubuntu 使用Cisco VPN、AnyConnect、OpenConnect的方法。

    自己建的廉价Shadowsocks服务器总是不稳定,众所周知,PPTP在中国大陆已经废了.为了连接外网,所以购买了BlueCloud的VPN.但是他们家的VPN是使用Cisco VPN,可以使用Any ...

  2. nodejs入门 SSH服务器远程部署nodejs2

    服务器安装nodejs昨天好像出了点问题 今天参考的链接是http://nodejs.cn/download/package-manager/#debian-and-ubuntu-based-linu ...

  3. Linux mint 14输入法问题

    新安装了Linux mint 14,莫名其妙地没有了中文输入法,安装并设置IBUS为默认输入法,但怎么也没反应.点击输入法图标,上面显示“No input window”,其实这不关输入法自身程序和设 ...

  4. DotNetBar 第2课,窗口设置 Ribbon Form 样式

    1. 新增 windows 窗体时,选 Ribbon Form 2. 窗体继承 Office2007RibbonForm 3. 设计窗口下面,删除 删除styleManager1  组件 窗口效果如下 ...

  5. 【转载】Spark性能优化指南——高级篇

    前言 数据倾斜调优 调优概述 数据倾斜发生时的现象 数据倾斜发生的原理 如何定位导致数据倾斜的代码 查看导致数据倾斜的key的数据分布情况 数据倾斜的解决方案 解决方案一:使用Hive ETL预处理数 ...

  6. linux sed的使用

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理, 可以将数据行进行替换.删除.新增.选取等特定工作. sed本质上是一个编辑器,但是它是非交互式的,这点与VIM不同:同时 ...

  7. OpenStack虚拟机DHCP获取不到IP地址排查

    版本:OpenStack Liberty Neutron DVR 现象: 1.在虚拟机内部不停地dhclient 2.在虚拟机所属的计算节点的物理网卡上抓包,发现该虚拟机发出的dhcp广播包 3.在虚 ...

  8. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  9. 备受SQL青睐的“1”

    写在前面:所用sql语句皆是在oracle 11g r1 数据库中实验. 在sql书写中,经常会用到数字1,例如 count(1),select 1, where 1=1等等,这样做有何好处呢?下面我 ...

  10. Ext.Window 的常见属性

    Ext.Window 的常见属性:    plain:true,(默认不是)    resizable:false,(是否可以改变大小,默认可以)    maximizable:true,(是否增加最 ...