`
18335864773
  • 浏览: 22275 次
文章分类
社区版块
存档分类
最新评论

[转载]java导出excel

阅读更多

一、需求背景

  在项目开发中,经常会遇到导出Excel报表文件的情况,因为很多情况下,我们需要打印Excel报表,虽然在网页上也可以生成报表,但是打印网上里的报表是无法处理排版问题的,所以最好的方式,还是生成Excel文件。

       PageOffice封装了一组用于动态输出数据到Excel文档的相关类,全部包含在com.zhuozhengsoft.pageoffice.excelwriter  命名空间之中。PageOffice对Excel的赋值操作分两种方式:1. 单元格赋值,这个很好理解,sheet.openCell("D5"),返回值就是一个Cell对象;2. 针对一个区域赋值。这个区域在PageOffice的概念里就是Table对象,比如:sheet.openTable("C9:H15")的返回值就是就是Table对象,这个Table就是”C9:H15”这个区域。下面就针对这两种操作方式来分别介绍。

二、 给Excel单元格赋值

  创建Workbook对象,操作指定sheet中的指定单元格,在打开Excel文件后通过PageOfficeCtrl对象的setWriter方法把数据写入到Excel文件中:

复制代码
Workbook wb = new Workbook();
Sheet sheet = wb.openSheet("销售订单");
sheet.openCell("D5").setValue(“北京某某公司”);

PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
poCtrl1.setServerPage("poserver.do");
poCtrl1.setWriter(wb);
poCtrl1.webOpen("{模板文件路径}", OpenModeType.xlsSubmitForm, "");
复制代码

  通过上面的代码可以看出,给Excel单元格赋值,首先需要创建Workbook对象,然后通过此对象的OpenSheet方法,获取到Sheet对象,再通过Sheet对象的OpenCell方法就可以获取的Cell对象,进行赋值或其他操作。

  Sheet对象有两个方法可以获取到Cell对象:1. openCell(String CellAddress),参数为单元格引用字符串。例如:"A1";2. openCellRC(int Row, int Col),参数为excel单元格的行数和列数。所以上面给Excel单元格赋值的代码改成下面的代码也是可以的。

sheet.openCellRC(5,4).setValue(“北京某某公司”);

三、设置Cell的样式

  

  这些属性不但可以用来设置单元格的前景色、背景色、边框、字体和对齐方式,甚至可以设置公式,基本上所有的单元格设置需求都可以实现。比如:设置一个单元格的背景色为为绿色。

  

Workbook wb = new Workbook();
wb.openSheet("Sheet1").openCell("E16").setBackColor(new Color(0, 128, 128));

  果要设置单元格的字体,就需要操作Font对象进行设置;如果要设置单元格的边框样式,就需要操作Border对象进行设置。使用Border对象设置Excel的单元格样式,是可以分别对单元格的上下左右边框单独设置样式的,所以再复杂的表格样式用PageOffice也可以“绘制”出来。PageOffice中的Table对象可以设置Table的Border样式,所以在此不作详细的叙述,下面单独用一个章节来叙述Border的设置。

四、操作Excel中的区域(Table) 

  PageOffice开发平台中,针对Excel文件的处理增加了一个“Table”的概念,一个Table指的就是一个区域,例如:sheet.OpenTable("C9:H15")的返回值就是就是Table对象,这个Table所操作的区域就是”C9:H15”。 为何需要这个Table的概念呢?下面就说明一下使用Table对象的优点。

         在实际的项目需求中,常常会需要在Excel 中循环的插入多条数的数据,比如:需要在excel中以B11单元格为起始位置,插入10条包含6个字段的数据,如果使用Cell对象写一个循环程序给单元格赋值会是这样的:

复制代码
DataTable dt = new DataTable();
for (int i = 0; i < 10; i++) // 10条数据
{
    sheet.OpenCellRC(“B”+(11+i).ToString())Value = dt.Rows[i][0].ToString();
    sheet.OpenCellRC(“C”+(11+i).ToString())Value = dt.Rows[i][1].ToString();
    sheet.OpenCellRC(“D”+(11+i).ToString())Value = dt.Rows[i][2].ToString();
    sheet.OpenCellRC(“E”+(11+i).ToString())Value = dt.Rows[i][3].ToString();
    sheet.OpenCellRC(“F”+(11+i).ToString())Value = dt.Rows[i][4].ToString();
    sheet.OpenCellRC(“G”+(11+i).ToString())Value = dt.Rows[i][5].ToString();
}
复制代码

  如果使用Table对象编程,就与操作数据集的概念一样,代码也更灵活,代码如下:

复制代码
DataTable dt = new DataTable();
PageOffice.ExcelWriter.Table table1 = sheet.OpenTable("B11:G20");
for (int i = 0; i < 10; i++) // 10条数据
{
    for (int j = 0; j <6; j++) // 6个字段
    {
        table1.DataFields[j].Value = dt.Rows[i][j].ToString();
    }
    table1.NextRow();
}
table1.Close();
复制代码

  通过Cell实现这个赋值操作还有一个方法,使用OpenCellRC方法,通过行列号操作会更简单,代码如下:

复制代码
DataTable dt = new DataTable();
for (int i = 0; i < 10; i++) // 10条数据
{
    for (int j = 0; j <6; j++) // 6个字段
    {
        sheet.OpenCellRC(11+i,2+j )Value = dt.Rows[i][j].ToString();
    }
}
复制代码

  但是这个代码相对于Table对象的操作来说有点晦涩,只是看OpenCellRC中的参数是不容易立刻知道操作的是哪个单元格的,还有一个情况是通过Cell赋值无法做到的,那就是在已有的表格模板中插入不定行数的数据。例如:下图中的模板在“合计”之前只有10行空白行,怎么动态插入50条数据并且数据行的样式也统一呢?这种情况使用Cell是无法解决问题的,但是前面使用Table给Excel赋值的代码就可以解决这个问题。使用Table赋值的特点是:在赋值的过程中,如果Table所包含的区域行数不够,那么Table会自动插入行,并且循环重复使用Table区域中各行的样式,直到所有的数据都填充完毕。

 

分享到:
评论

相关推荐

    java 导出excel,带图片的Excel导出

    在Java编程中,导出Excel是一项常见的任务,特别是在数据分析、报表生成或数据交换等领域。而带图片的Excel导出则增加了复杂性,因为涉及到二进制数据的处理和Excel特定格式的支持。以下是一些关于如何在Java中实现...

    java导出excel超过65536条记录出错

    java导出excel超过65536条记录出错 java导出excel超过65536条记录出错 java导出excel超过65536条记录出错 java导出excel超过65536条记录出错

    java导出Excel 时候 相同行合并

    java导出Excel 时候 相同行合并(可合并多列); 已测试通过;

    java导出excel POI jar包

    Java导出Excel是Java开发中常见的需求,尤其是在数据处理和报表生成方面。Apache POI库是Java领域中广泛使用的工具,它允许开发者读写Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。本篇文章将深入讲解...

    java导出excel树结构工具类

    该工具类实现java导出树形结构的方法,并未采用excel分组功能实现,而是根据树节点显示层级设置excel样式。针对easyUi,treeGrid开发的导出excel功能。方法简便实用、性强、通俗易懂。项目中亲测,no problem。

    java导出excel复合表头简单实例

    在Java编程中,导出Excel是一项常见的需求,尤其在数据处理和报表生成方面。本资源提供的"java导出excel复合表头简单实例"是针对Java开发者的一个实用教程,特别是对于那些刚开始接触Java Excel导出功能的新手。这个...

    java导出excel并生成折线图.java

    资源描述:一个使用java做的导出数据,并且可以在excel表生成折线图的工具类,使用简单操作方便。

    java导出excel复杂表头

    在Java开发中,导出Excel是一项常见的需求,尤其在数据报表和数据分析场景中。本示例涉及的主题是“java导出excel复杂表头”,这意味着我们要处理的不是简单的单级表头,而是包含多级或者多层次结构的表头。在描述中...

    java导出到excel的工具类

    在Java编程中,导出数据到Excel是一种常见的需求,特别是在数据分析、报表生成或者数据交换的场景下。Apache POI是一个强大的库,专为处理Microsoft Office格式的文件,尤其是Excel(.xlsx和.xls)文件。本篇文章将...

    java poi导出图片到excel示例代码

    Java POI导出图片到Excel示例代码详解 Java POI是Java开发中常用的开源库,用于读写Microsoft Office文件格式,包括Excel、Word、PowerPoint等。今天,我们将介绍如何使用Java POI将图片导出到Excel中。 标题解释 ...

    java导出excel(写入到excel后再下载)示例

    Java导出Excel是Java开发中常见的需求,尤其在数据分析、报表生成或数据交换场景中。本示例资源提供了一个RAR压缩包,包含了实现这一功能的源代码,主要讲解了两个核心部分:一是如何将数据写入Excel文件并保存在...

    java导出复杂Excel内容数据动态循环

    java导出复杂Excel内容数据动态循环

    java导出excel的jar包及例子代码

    在Java开发中,导出Excel是一项常见的需求,例如在数据报表、数据分析或用户下载功能中。本知识点将详细讲解如何使用Java实现Excel的导出,包括所需的库和一个示例代码。 首先,为了在Java中处理Excel文件,我们...

    Java 导出excel工具类(封装,带导出格式和类型转换)

    * 导出excel(利用反射机制) * String[] title = {"订单号","商品名称","商品价格","创建时间"}; * String[] field = {"orderNum","productName","productPrice","createTime"}; * ExportTools.export("sellJoin...

    java 导出excel(方法二)

    在Java编程中,导出Excel数据是常见的任务,特别是在数据处理和报表生成的场景下。本教程将聚焦于使用jxl库来实现这一功能。jxl是一个流行且强大的Java库,能够读写Microsoft Excel文件。这里我们将介绍如何利用jxl...

    java 导出excel例子,使用poi

    java导出excel例子,使用的是poi,可以分sheet导出,可以导出txt

    java导出excel的相关jar

    压缩包中的文件"java导出excel"很可能包含了使用这两种库的示例代码或教程资源,你可以通过解压并学习这些文件来深入理解如何在Java中实现数据到Excel的导出。记得在实际使用时,要根据项目需求选择合适的技术,并...

    Java 导出Excel.zip

    "Java 导出Excel.zip"这个压缩包文件提供了一个Java实现的解决方案,允许开发者以全泛型的方式方便地导出数据到Excel文件,而且支持动态创建不同数量的sheet页面,增强了灵活性。 1. **Java与Excel交互**:Java中...

    Java导出数据到Excel文件中(支持多表头)

    在Java编程中,导出数据到Excel文件是一项常见的任务,特别是在数据分析、报表生成或数据交换等场景下。这里我们将深入探讨如何使用Java实现从数据库中查询数据并将其以多级表头的形式导入到Excel文件中。 首先,...

    java操作数据库 导出excel

    Java操作数据库并导出Excel是一项常见的任务,尤其在数据分析、报表生成或数据迁移等领域。这里主要涉及两个核心技术:Java数据库连接(JDBC)用于与数据库交互,以及Apache POI库用于处理Excel文件。 首先,Java...

Global site tag (gtag.js) - Google Analytics