这两天在学习了程序生成excel报表
Java中生成excel主要有两种:POI和Excel API
我用到的是POI。。。。。
以下是我测试的代码:
Java类:
public class PoiTest {
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:\\foo.xls");
String sql = "select * from fullsegment";
List list = new ArrayList();
list = new ExcelDao().Select(sql);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
wb.setSheetName(0, "Matrix");
for(short i=0; i<list.size(); i++) {
HSSFRow row = s.createRow(i);
for(short j=0; j<6; j++) {
HSSFCell cell = row.createCell(j);
//cell.setCellValue(""+i+","+j);
cell.setCellFormula((String) ((List)list.get(i)).get(j));
//cell.set
}
}
wb.write(fos);
fos.close();
}
}
dao类:
public class ExcelDao {
private Connection conn = null;
public ExcelDao() {
conn = new DBProfile().initDB();
}
public List Select(String sql){
List list = new ArrayList();
List list1 = new ArrayList();
try {
Statement smt = conn.createStatement();
ResultSet rs = smt.executeQuery(sql);
while(rs.next()){/*
int start = rs.getInt("start");
int end = rs.getInt("end");
String area = rs.getString("area");
int areaid = rs.getInt("areaid");
int type = rs.getInt("type");
int cityid= rs.getInt("cityid");*/
list.add(rs.getString("start"));
list.add(rs.getString("end"));
list.add(rs.getString("area"));
list.add(rs.getString("areaid"));
list.add(rs.getString("type"));
list.add(rs.getString("cityid"));
list1.add(list);
}
rs.close();
smt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list1;
}
}
数据库表:
CREATE TABLE `fullsegment` (
`start` bigint(13) unsigned NOT NULL default '0',
`end` bigint(13) unsigned NOT NULL default '0',
`area` varchar(10) character set utf8 NOT NULL default '',
`areaid` smallint(9) NOT NULL default '0',
`type` tinyint(3) NOT NULL default '0',
`cityid` smallint(5) NOT NULL default '0',
UNIQUE KEY `start` (`start`,`end`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
以上代码我测试过,成功的话,会在D盘下创建一个foo.xls文件,如果表中记录不为空,
那么excel表中是有记录的。。。。。。
补充:
在查询数据库记录时,是有一个问题的,得到结果集之后取数据,如果是这样取数据:
int start = rs.getInt("start");
int end = rs.getInt("end");
String area = rs.getString("area");
int areaid = rs.getInt("areaid");
int type = rs.getInt("type");
int cityid= rs.getInt("cityid");*/
那么会跑出一个sql异常:。。。is outside valid range for the datatype integer.
因为数据库表中字段的类型是bigint类型的
类型不匹配,就跑出上面的异常。。。。。解决方案未找到,但不会影响程序的运行
因此我用的是这种方式取数据:
list.add(rs.getString("start"));
list.add(rs.getString("end"));
list.add(rs.getString("area"));
list.add(rs.getString("areaid"));
list.add(rs.getString("type"));
list.add(rs.getString("cityid"));
分享到:
相关推荐
apache软件基金 poi组件 轻松实现,生成excel报表
poi生成excel报表合并列和列,按规范构造数据集就可以,mergeRow 合并行,genMergeCellByContent 合并头
利用poi技术生成excel报表和读取word文档内容
poi导出excel统计报表,有合并列的。 根据结构生成层级。poi导出excel统计报表,有合并列的。 根据结构生成层级。
用java ,apache poi生成excel报表
poi jxl 生成EXCEL 报表 POI 用的JAR poi-3.6-20091214.jar jxl 用到的jar jxl-2.6.jar
详解JAVA_POI导出EXCEL报表的操作(包括各种格式及样式的实现),最全面的JAVA_POI导出EXCEL报表操作。
poi导入导出excel生成报表
java 生成Excel,可根据模板格式生成 Excel打印专用 报表 这个是旧版本的 ,需要新版本的 可以联系我
POI和JFreeChart框架实现生成Excel文件(生成 统计图)
NULL 博文链接:https://keep-going.iteye.com/blog/1907664
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及...
使用Apache POI的3.16版实现,Excel模板填充数据导出Excel报表
NULL 博文链接:https://838179211.iteye.com/blog/1686294
包里带有了三大框架与报表的jar包,且代码中注有详细的注释,下载这可以很容易的上手
java 通过JXL架包,给excel文件添加水印,水印内容可自定义
NULL 博文链接:https://weigang-gao.iteye.com/blog/2103017
java报表JXL和POI打印设置 设置打印,非常好用 一般文档没有 绝版
统计报表功能有excel转html的场景,读取指定位置的excel,将其转换成html...考虑到Apache成熟的Office文档处理工具POI的广受欢迎,POI提供了强大的excel表格处理的能力,不论是读还是写,都对开发人员提供了极大的便利