- 浏览: 336467 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (169)
- spring (20)
- java (44)
- ibatis (0)
- hibernate (6)
- struts (2)
- javascript (6)
- ajax (1)
- eclipse (4)
- 其他 (10)
- database (17)
- ibatis 分页 (7)
- xml (2)
- pl/sql (6)
- sql (4)
- apache (3)
- oracle (8)
- jdom (1)
- Open ModelSphere (1)
- 线程 (2)
- 多线程 (2)
- 查找文件 (1)
- Comparator (2)
- jxl (2)
- jquery (1)
- Flex (2)
- 非技术 (1)
- mysql (2)
- zxing (1)
- jdbc (1)
- Java内存 (1)
- editplus (1)
- log4j (1)
- sqlserver (2)
- base64 (1)
- Linux (4)
- Shell (2)
- 非技术共享 (1)
- 省市 (1)
- PowerDesigner (3)
- 观察者模式 (2)
- Servlet (1)
- 单点登录 (1)
- IO (1)
- tomcat (1)
- clob (1)
- html (1)
- jsp (2)
- JNative (1)
- WebService (2)
- Highcharts (1)
- Spring Security (1)
- ztree (1)
- Mongodb (3)
- sftp (1)
- SVN (1)
- openSUSE (1)
- Ubuntu (1)
- nio (1)
- springboot (1)
- java8 (1)
最新评论
-
wajjj:
[flash=200,200][url][img][list] ...
【JAVA】读取excel内容(兼容03和07格式) -
xurichusheng:
jjhe369 写道感谢分享!但是发现一个小问题,就是第13, ...
oracle 存储过程分页查询 -
jjhe369:
感谢分享!但是发现一个小问题,就是第13,14行的V_STAR ...
oracle 存储过程分页查询 -
飞天奔月:
为什么不用 Map<String, String> ...
读取.properties的内容,并将内容放入一个Map中 -
xurichusheng:
814687491 写道测试了一下,无法换行!你可以自定义自己 ...
使用google的zxing制作二维码
1. 数据库:oracle 10g2
JDK: 1.6.0_20
jar 包:jxl-2.6.6.jar log4j.jar ojdbc14-10.2.0.4.0.jar
2. 导出的核心代码 ExcelOutput
import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.util.List; import jxl.Workbook; import jxl.write.WritableFont; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; import org.apache.log4j.Logger; /** * @ClassName: ExcelOutput * @Description: Excel文档生成功能 * @author * @company * @date 2012-6-29 * @version V1.0 */ public final class ExcelOutput { private static Logger log = Logger.getLogger(ExcelOutput.class); // 实例 private static final ExcelOutput INSTANCE = new ExcelOutput(); private ExcelOutput() { } /** * @Title: getInstance * @Description: 获取ExcelOutput实例,使用单例 * @return ExcelOutput * @author * @date 2012-6-25 */ public static ExcelOutput getInstance() { return INSTANCE; } /** * 取得用于下载excel文件的输出流 * * @param os * 输出流,如response.getOutputStream()或FileOutputStream * @param subject * 主题,用于表示工作表的名称 * @param titles * 标题行,用于显示在表格的第一行 * @param list * 实际内容,是List集合对象. 每一值又是一个List对象,表示一行的记录,注意每个值是String都对象 * @return 输出流 */ public void createOutPutStreamForObjs(OutputStream os, String subject, String[] titles, List<Object[]> list) { log.info("start to create excel file."); WritableWorkbook wwb = null; try { // 通过模板得到一个可写的Workbook wwb = Workbook.createWorkbook(os); // 第几个工作表 int number = 0; // 一个工作表插入3000条记录 int num = 3000; while ((number + 1) * num <= list.size()) { // 生成名为subject + number的工作表,0表示这是第一页 jxl.write.WritableSheet ws = wwb.createSheet(subject + number, number); // 表格头 // 添加带有字型Formatting的对象 jxl.write.WritableFont wfTitle = new jxl.write.WritableFont( WritableFont.TAHOMA, 12, WritableFont.BOLD, false); jxl.write.WritableCellFormat wcfFTitle = new jxl.write.WritableCellFormat( wfTitle); for (int i = 0; i < titles.length; i++) { jxl.write.Label labelCFTitle = new jxl.write.Label(i, 0, titles[i], wcfFTitle); ws.addCell(labelCFTitle); } // 表格内容 jxl.write.WritableFont wf = new jxl.write.WritableFont( WritableFont.TAHOMA, 11, WritableFont.NO_BOLD, false); jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat( wf); int numI = 0; for (int i = number * num; i < (number + 1) * num; i++) { Object[] subList = (Object[]) list.get(i); for (int j = 0; j < subList.length; j++) { String text = subList[j] == null ? "" : subList[j] .toString(); jxl.write.Label labelCF = new jxl.write.Label(j, numI + 1, text, wcfF); ws.addCell(labelCF); } numI++; } number = number + 1; } if (list.size() > number * num) { jxl.write.WritableSheet ws = wwb.createSheet(subject + number, number); // 表格头 // 添加带有字型Formatting的对象 jxl.write.WritableFont wfTitle = new jxl.write.WritableFont( WritableFont.TAHOMA, 12, WritableFont.BOLD, false); jxl.write.WritableCellFormat wcfFTitle = new jxl.write.WritableCellFormat( wfTitle); for (int i = 0; i < titles.length; i++) { jxl.write.Label labelCFTitle = new jxl.write.Label(i, 0, titles[i], wcfFTitle); ws.addCell(labelCFTitle); } // 表格内容 jxl.write.WritableFont wf = new jxl.write.WritableFont( WritableFont.TAHOMA, 11, WritableFont.NO_BOLD, false); jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat( wf); int numI = 0; for (int i = number * num; i < list.size(); i++) { Object[] subList = (Object[]) list.get(i); for (int j = 0; j < subList.length; j++) { String text = subList[j] == null ? "" : subList[j] .toString(); jxl.write.Label labelCF = new jxl.write.Label(j, numI + 1, text, wcfF); ws.addCell(labelCF); } numI++; } } // 写入Exel工作表 wwb.write(); } catch (RowsExceededException e) { log.error("create excel file '" + subject + "' fail!", e); } catch (FileNotFoundException e) { log.error("create excel file '" + subject + "' fail!", e); } catch (WriteException e) { log.error("create excel file '" + subject + "' fail!", e); } catch (IOException e) { log.error("create excel file '" + subject + "' fail!", e); } catch (Exception e) { log.error("create excel file '" + subject + "' fail!", e); } finally { // 关闭Excel工作薄对象 try { if (wwb != null) { wwb.close(); } os.flush(); os.close(); } catch (WriteException e) { log.error("close WritableWorkbook fail!", e); } catch (IOException e) { log.error("close WritableWorkbook fail!", e); } catch (Exception e) { log.error("close WritableWorkbook fail!", e); } log.info("end to create excel file."); } } }
测试方法(Junit4):
@Test public void export() { Connection conn = JDBCUtil.getInstance().getConnection(); String sql = "SELECT DEPTNO, DNAME, LOC FROM DEPT"; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(sql); rs = ps.executeQuery(); List<Object[]> list = new ArrayList<Object[]>(3); Object[] objs = null; while (rs.next()) { objs = new Object[] { rs.getInt("DEPTNO"), rs.getString("DNAME"), rs.getString("LOC") }; list.add(objs); } // 生成excel文件 createExcel(list); } catch (SQLException e) { log.error("SQLException", e); } catch (Exception e) { log.error("Others Exception!", e); } finally { JDBCUtil.getInstance().close(conn, ps, rs); } } /** * @Title: createExcel * @Description: 生成excel文件 * @param lsit * : 查询结果集 * @author * @date 2012-6-29 */ private void createExcel(List<Object[]> list) { // 文件名 String name = "部门信息"; // excel文件表头 String[] head = { "部门编号", "部门名称", "位置" }; File file = new File(name + ".xls"); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { log.error("create file fail!", e); } } OutputStream os = null; try { os = new FileOutputStream(file); } catch (FileNotFoundException e) { log.error("create OutputStream fail!", e); } // 生成excel文件 ExcelOutput.getInstance().createOutPutStreamForObjs(os, name, head, list); }
运行成功后,会在工程的根目录下生成 部门信息.xls
web 环境下的方法:
这里使用struts2.
查询条件 QueryParam
/** * @ClassName: QueryParam * @Description: 查询条件 * @author * @company * @date 2012-6-29 * @version V1.0 */ public class QueryParam { private Integer deptNo; private String deptName; private String location; @Override public String toString() { StringBuffer buf = new StringBuffer("QueryParam:["); buf.append("deptNo=").append(deptNo); buf.append(",deptName=").append(deptName); buf.append(",location=").append(location); buf.append("]"); return buf.toString(); } // 这里省略 getter/setter }
public void getAllDept(QueryParam params) throws Exception { StringBuffer buf = new StringBuffer(); buf.append("SELECT DEPTNO, DNAME, LOC FROM DEPT where 1=1 "); if (params.getDeptNo() != null) { buf.append(" and DEPTNO = ").append(params.getDeptNo()); } if (null != params.getDeptName() && !"".equals(params.getDeptName())) { buf.append(" and DNAME like %").append(params.getDeptName()) .append("%"); } if (null != params.getLocation() && !"".equals(params.getLocation())) { buf.append(" and LOC like %").append(params.getLocation()) .append("%"); } Connection conn = JDBCUtil.getInstance().getConnection(); PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(buf.toString()); rs = ps.executeQuery(); List<Object[]> list = new ArrayList<Object[]>(3); Object[] objs = null; while (rs.next()) { objs = new Object[] { rs.getInt("DEPTNO"), rs.getString("DNAME"), rs.getString("LOC") }; list.add(objs); } // 生成excel文件 createExcel(list); } catch (SQLException e) { log.error("SQLException", e); } catch (Exception e) { log.error("Others Exception!", e); } finally { JDBCUtil.getInstance().close(conn, ps, rs); } }
action 方法:
在action类中定义一个私有的属性 private QueryParam queryParam;设置其setter/getter方法
public void getExport() { log.info("start to export dept."); if (null != queryParam) { try { // 调用service层,查找要导出的数据 List<Object[]> list = getAllDept(queryParam); if (null != list && !list.isEmpty()) { log.info("export dept to excel. The data count is:" + unitList.size()); } else { log.info("export dept to excel. The data count is empty."); } HttpServletResponse response = ServletActionContext .getResponse(); OutputStream os = response.getOutputStream(); response.reset(); // 文件名 String name = "部门信息"; // excel文件表头 String[] head = { "部门编号", "部门名称", "位置" }; byte[] fileNameByte = (name + ".xls").getBytes("GBK"); // 文件名 String fileName = new String(fileNameByte, "ISO8859-1"); response.setHeader("Content-disposition", "attachment; filename=" + fileName); response.setContentType("application/msexcel"); // 生成excel文件 ExcelOutput.getInstance().createOutPutStreamForObjs(os, name, head, list); } catch (Exception e) { log.error("export dept excel file fail!", e); } log.info("end to export dept."); } }
发表评论
-
mysql树
2019-09-26 08:39 351mysql树 -
【JAVA】组织树
2019-09-04 10:17 983JDK 版本:jdk 1.8 及以上。 1. ... -
多线程多批量插入大数据
2018-10-31 11:19 6347参考 https://blog.csdn.ne ... -
java 7 nio逐行读取文件内容
2015-12-26 23:33 5398nio逐行读取文件内容,使用 java 7. 首先,获取 ... -
java 6 IO读取txt文件内容
2015-12-26 23:24 828逐行读取。 首先获取文件的编码格式; 读取文件内容。 ... -
【JAVA】读取excel内容(兼容03和07格式)
2015-12-21 13:51 2122jar 包: poi-3.13.j ... -
一行代码去除List中的重复数据
2015-12-02 10:52 16271. 核心代码: List<String> ... -
将List中的对象中的字段的重复值删除
2015-12-01 11:10 2639如下面的对象 Subs,如果其属性 startSt 和 e ... -
jdk 官方下载地址
2015-11-06 10:00 1742http://www.oracle.com/techn ... -
jsp页面显示二进制图片
2014-11-05 15:58 40161. DAO层 import java.sql.C ... -
java中使用JNative调用dll方法
2014-03-03 16:02 5217使用JNative调用dll方法, dll 文件名 ... -
使用jxl,将数据写入excel中
2013-05-08 14:19 948转自 jxl 生成excel,从服务器导出exc ... -
Vector排序
2013-05-08 10:17 14471. Vector 默认按元素的添加顺序排序 im ... -
使用观察者模式监听Map值的改变
2013-05-02 16:46 6099观察者(Observer)角色:为所有的具体观察者定 ... -
【转】一个比较快的Base64 编码/解码 算法
2013-03-28 17:50 1639转自: 中国开源社区 最快的 Base64 编码/解 ... -
jdbc 数据库连接池
2012-12-04 16:09 1472注:有些java类是JDK ... -
使用Comparator做对象的排序
2012-06-15 18:15 1286之前在面试的时候,人家老是问怎么对对象进行排序。 虽然 ... -
【转】 模拟银行业务调度系统
2012-06-13 15:39 1150转自:CSDN,itm_hadf ... -
HttpClient 代理实例(Get方式) 线程
2012-01-10 14:23 1513使用的jar包: commons-codec-1.4.jar ... -
httpclient资料(自用)
2012-01-10 07:07 1008httpclient资料
相关推荐
C#将数据导入excel和Excel数据导入数据库使用的是SQL Server数据库
springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel 内容有点多 springboot 导出excel 导入excel 生成excel ...
PB中导入EXCEL数据
解决Navicat for MySql 导入EXCEL中文乱码问题解决的有效方法
这里面有一些基础的关于怎么从数据库中把表信息导入到Excel文件中,还有怎么将Excel表中的数据显示到DataGridView中去的代码,写的很基础。
本实例在显示学生成绩信息时,可将数据导入到Excel文件中进行显示。也可下载Excel文件。并在导入到Excel中的时候,会根据Gridview的格式进行变化,很不错的一个小实例。
matlab导入excel数据教程
将文件夹下所有文件名称导入excel表中
将Access数据库导入Excel文件中
一部分是:将文本文件导入EXCEL中,可以将上一步查找的结果导入,也可以自己选择文件导入(支持多选)。 2、如何使用他? a、批量查找: 首先,在“读入位置”按钮处设置你所要读取的文件的存放位置,此时程序...
本程序实现功能: 1.DataGrid数据的显示、修改与保存 2.DataGrid数据导入Excel
asp上传并导入EXCEL文件
Web页面中sqlserver快速导入excel,生成csv格式 有的程序在Web页SQLSERVER导入excel的过程中,会出现下载时找不到样式的错误提示。本资源避免了以上问题,快速打开,快速导出。 c#.Net2005下运行成功。
1.使用Openfile功能导入excel文件,读出文件名、文件地址 2.使用一个button实现导入数据模板,导入表格内容 3.实现进度条功能,跟踪文件传输进度 4.引用Microsoft.Office.Interop.Excel和Spire.Xls分别实现文件的...
vb access数据库与excel数据互相导入的源代码,很经典的啊
jsp 使用poi导入 excel的例子,参考网址 :https://www.cnblogs.com/bobodeboke/p/4959103.html
jeecg导入excel 想学的速度了
如何批量导入照片到Excel中
VB EXCEL导入 EXCEL导入 EXCEL导入
C# 导入Excel文件到ListView和导出ListView到Excel文件