//jxl.jar导入导出Excel表格
//一.在SSH中导入生Excel表格的依赖包Jxl.jar
//二.在service层创建接口IExcelService
package com.crms.service;
import java.io.InputStream;
import java.util.List;
/**
* struts2导出Excel
* @author Administrator
*
*/
public interface IExcelService {
public InputStream getExcelInputStream(List<Object[]> objList);
}
//三.创建接口的实现类
package com.crms.service.impl;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import com.crms.service.IExcelService;
/**
* 写入Excel文件
*
* 用來生成一个Excel文件
*
* @author Administrator
*
*/
public class ExcelServiceImpl implements IExcelService {
// 定义request ,response.
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
/**
* 将OutputStream转化为InputStream
*/
public InputStream getExcelInputStream(List<Object[]> dataList) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
putDataOnOutputStream(out,dataList);
return new ByteArrayInputStream(out.toByteArray());
}
/**
* 生成数据表(Excel)
*/
private void putDataOnOutputStream(OutputStream os,List<Object[]> dataList) {
//构造Workbook(工作薄)对象
WritableWorkbook workbook=null;
//创建工作表
WritableSheet ws=null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
workbook = Workbook.createWorkbook(os);
/*
* 创建一个可写入的工作表
* Workbook的createSheet方法有两个参数,
* 第一个是工作表的名称,第二个是工作表在工作薄中的位置
* 生成名为"第一页"的工作表,参数0表示这是第一页
*/
ws= workbook.createSheet("offerUp", 0);
//创建列名
// 定义格式, 字体, 下划线, 斜体, 粗体, 颜色
WritableFont wf = new WritableFont(WritableFont.ARIAL, 10,
WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
// 创建格式化对象实例
WritableCellFormat totalx2Format = new WritableCellFormat(wf);
// 垂直居中
totalx2Format.setVerticalAlignment(VerticalAlignment.CENTRE);
// 水平居中
totalx2Format.setAlignment(Alignment.CENTRE);
// 设置标题.ws.addCell(new jxl.write.Label(列(从0开始), 行(从1开始), 内容.));
ws.addCell(new Label(0, 0, "编号",totalx2Format));
ws.addCell(new Label(1, 0, "客户名称",totalx2Format));
ws.addCell(new Label(2, 0, "订单金额(元)",totalx2Format));
// 合并单元格,参数格式(开始列,开始行,结束列,结束行)
ws.mergeCells(0, 0, 0, 0);
ws.mergeCells(1, 0, 1, 0);
ws.mergeCells(2, 0, 2, 0);
// 设置单元格的宽度
ws.setColumnView(0, 10);
ws.setColumnView(1, 40);
ws.setColumnView(2, 20);
//添加数据
if (null!=workbook) {
//下面开始添加单元格数据
for(int i=0;i<dataList.size();i++){
for(int j=0;j<dataList.get(0).length;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i+1,dataList.get(i)[j].toString(),totalx2Format);
try {
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
}
//从内存中写入文件中
workbook.write();
//关闭资源,释放内存
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
四.Action层将数据库的数据传给Excel,并返回结果
package com.crms.web.action;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import com.crms.biz.StatisticsBiz;
import com.crms.pojo.Customerinfo;
import com.crms.pojo.msms.Orderdetail;
import com.crms.pojo.msms.Orders;
import com.crms.service.IExcelService;
import com.crms.service.impl.ExcelServiceImpl;
/**
* struts2导出Excel
* @author Administrator
*
*/
public class ExcelAction {
private StatisticsBiz statisticsBiz;
private List<Orderdetail> orderdetailList;
private Customerinfo customerinfo;
private ExcelServiceImpl excelServiceImpl=new ExcelServiceImpl();
public StatisticsBiz getStatisticsBiz() {
return statisticsBiz;
}
public void setStatisticsBiz(StatisticsBiz statisticsBiz) {
this.statisticsBiz = statisticsBiz;
}
public List<Orderdetail> getOrderdetailList() {
return orderdetailList;
}
public void setOrderdetailList(List<Orderdetail> orderdetailList) {
this.orderdetailList = orderdetailList;
}
public IExcelService getExcelService() {
return excelService;
} public void setExcelService(IExcelService excelService) {
this.excelService = excelService;
}
public ExcelServiceImpl getExcelServiceImpl() {
return excelServiceImpl;
}
public void setExcelServiceImpl(ExcelServiceImpl excelServiceImpl) {
this.excelServiceImpl = excelServiceImpl;
}
//+++++++++++++++++++++++++++
private InputStream excelStream;
private IExcelService excelService = new ExcelServiceImpl();
public InputStream getExcelStream() {
return excelStream;
}
public void setExcelStream(InputStream excelStream) {
this.excelStream = excelStream;
}
public String execute() {
String customerId = null;
List<Object[]> objectList = new ArrayList<Object[]>();
try {
orderdetailList = statisticsBiz.getOrderdetailService().queryAll();
Integer i = 0;
for (Orderdetail orderdetail_2 : orderdetailList) {
customerId = ((Orders) (orderdetail_2.getOrders())).getCustomer_id();
customerinfo = statisticsBiz.getCustomerinfoService().queryById(customerId);
((Orders) (orderdetailList.get(i).getOrders())).setCustomer_id(customerinfo.getCustomerName());
Object [] object={i+1,customerinfo.getCustomerName(),orderdetail_2.getSub_price()};
objectList.add(object);
i++;
}
} catch (Exception e) {
e.printStackTrace();
}
excelStream = excelService.getExcelInputStream(objectList);
return "excel";
}
}
//五.Struts2配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<!-- struts2导出Excel -->
<struts>
<package name="excel" namespace="/export2excel" extends="struts-default">
<action name="excel" class="com.crms.web.action.ExcelAction">
<result name="excel_*" type="stream">
<param name="contentType">
application/vnd.ms-excel
</param>
<param name="inputName">excelStream</param>
<param name="contentDisposition">
filename="{1}.xls"
</param>
<param name="bufferSize">1024</param>
</result>
</action>
</package>
</struts>
分享到:
相关推荐
Java操作Excel表格是Java开发中常见的一项任务,特别是在数据处理、报表生成以及数据导入导出等场景。`jxl.jar` 是一个非常流行的Java库,它允许开发者在Java程序中方便地读取和写入Excel文件。这个库是Java Excel ...
在Java开发中,处理Excel文件是一项常见的任务,尤其在数据导入导出、报表生成等领域。jxl库为Java提供了便利的方式来读写Excel文件,无需Microsoft Office的支持。本文将深入探讨如何使用jxl.jar这个完整的Java库来...
总之,`jxl.jar`是一个非常实用的工具,它使Java开发者能够方便地处理Excel文件,无论是简单的数据导入导出还是复杂的报表生成,都能轻松应对。记得在使用时处理好异常,确保文件读写的安全性。
jxl.jar是通过java操作excel表格的工具类库,开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的。
在许多场景下,我们需要将数据导出到Excel表格以便于分析、报告或者共享。本教程将介绍如何使用Java来实现这一功能,主要依赖于jxl库,这是一个用于读写Excel文件的开源Java库。 首先,你需要获取jxl.jar包。这个库...
总结来说,jxl.jar是Java开发人员处理Excel文件的强大工具,它简化了数据导入导出的过程,使得在Java应用程序中与Excel交互变得更加便捷。无论是在报表生成、数据分析,还是数据交换方面,jxl都能发挥重要作用。
数据库内容导入到Excel是数据处理中...总的来说,jxl.jar为Java开发者提供了一种强大而便捷的方式来处理Excel文件,无论是从数据库导出数据还是进行其他形式的数据交换。只需合理使用,它就能极大地提高你的工作效率。
总的来说,jxl.jar是Java开发环境下处理Excel数据的得力工具,无论是在数据分析、报表生成还是数据导入导出场景下,都能发挥重要作用。通过熟练掌握jxl.jar的使用,开发者可以大大提高工作效率,减少手动操作的繁琐...
8. **实战应用**:可能包括一个或多个实际案例,演示如何在实际项目中利用jxl进行数据导入导出、报表生成等。 通过阅读该博客文章,开发者应该能够掌握使用jxl.jar来操作Excel的基本技能,并且能够灵活运用到自己的...
以下是一份简单的Java源代码示例,演示了如何使用jxl.jar将数据导出到Excel表格: ```java import java.io.FileOutputStream; import java.io.IOException; import jxl.Sheet; import jxl.Workbook; import jxl....
**Java Excel API (jxl.jar) 最新版本详解与使用指南** ...无论你是要生成报告、分析数据还是进行数据导入导出,jxl都能有效地满足需求。只需按照上述步骤和示例,你就能在自己的项目中灵活运用这个库了。
总的来说,jxl.jar是Java开发中处理Excel文档的一个强大工具,它极大地简化了在代码中操作Excel的工作,无论是简单的数据导入导出还是复杂的格式设置和计算,都能通过jxl.jar方便地实现。因此,对于需要与Excel交互...
本文将深入探讨如何使用jxl.jar在Android中实现数据的Excel导入导出功能。 首先,你需要在项目中添加jxl.jar库。将该库文件放入项目的`libs`目录,并在`build.gradle`文件中进行配置,确保在构建过程中将其打包进...
本示例将详细介绍如何使用jxl.jar库来读写Excel文件,以及如何使用jdom.jar库来读写XML文件。 首先,让我们关注`jxl.jar`库,它是一个广泛使用的Java库,允许开发者读取、写入和修改Excel文件。以下是如何使用jxl....
在Java编程环境中,处理Excel文件是一项常见的需求,例如数据导入导出、报表生成等。在这种场景下,jxl.jar库扮演了重要的角色。它是一个轻量级的Java库,专门用于读取和写入Excel文件,而无需依赖Microsoft Office...
这个过程在Java应用程序中尤其有用,因为它提供了对Excel数据的直接访问,可用于数据分析、报告生成或数据导入导出等功能。 【描述】"简单的Demo,能找到你手机中的Excel,解析并展示在ListView中",这是对一个实际...
jxl还支持读取已存在的Excel文件,提取数据,这对于数据分析、报表生成和数据导入导出功能至关重要。需要注意的是,jxl主要针对.xls格式,对于.xlsx格式的现代Excel文件,可能需要使用其他库,如Apache POI。 结合...
jxl使得在Java程序中生成报表、数据分析或者数据导入导出变得简单,而无需依赖于安装了Excel的环境。 这些库文件通常用于以下场景: 1. **PDF生成**:例如,基于用户数据自动生成报告或发票,提供下载。 2. **多...
Java操作Excel是开发中常见的一种需求,特别是在数据处理和报表生成方面。JXL.jar是一个流行的Java库,专门用于读写Microsoft Excel文件...通过熟练掌握这个库,你可以轻松实现Excel数据的导入、导出、分析和报告功能。
标题"最新jxl Api jxl.jar"指的是jxl库的一个API版本,其中包含了jxl.jar文件,这是一个Java库,用于读写Microsoft Excel格式的电子表格。"最新"一词可能指的是该版本在2009年10月时是最新的,但请注意,随着时间的...