- 浏览: 98410 次
- 性别:
- 来自: 武汉
最新评论
-
yuanyuanhere:
这个方法是不是有问题啊
我的格式定义也是这样,如果date1是 ...
JAVA Date.after方法的时间定时应用 -
flyingpig4:
你说的smartChineseAnalyze是基于词库分表的吧 ...
lucene2.9 中文分词学习和SmartChineseAnalyzer的用法 -
javamanlcy007:
如果访问量很大,数据写入过于频繁,数据库会不会崩溃?
点击率统计mysql 自动加1 -
liuzm:
smallsnake 写道qyhdt 写道 不知道lz对 ...
lucene 入门学习,简单实例模访google搜索 -
smallsnake:
qyhdt 写道 不知道lz对lucene理解达到什么层 ...
lucene 入门学习,简单实例模访google搜索
在项目中,经常要把数据写成Excel.
所以在这里将介绍java 写Excel 基础操作
想对Excel进行之前,要引进一个包(jxl.jar)。本文章已提供下载
本文章写了二个例子,一个是对静态写入Excel 二是读出数据库的数据写入Excel
代码如下:
第一步 写一个 ExcelOpt 类
public class ExcelOpt {
/**
* 生成一个Excel文件 jxl
* @param fileName 要生成的Excel文件名
* @jxl.jar 版本:2.6
*/
public static void writeExcel(String fileName){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("工作表名称", 0);
//下面开始添加单元格
//静态开始
// 静态的插入
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
try {
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
// 静态结束
// 动态开始 如果想参考动态的,就把静态块注释点
// 动态的插入表格
// int j=0; //Excel中 第一行是从0开始
// Dao dao = new Dao();// 自己写的一个dao
// List list = dao.voteList(); // 自己写一个你要从数据库读出数据的list
// Label a = new Label(0,0,"ID"); //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
// Label b = new Label(1,0,"标题");
// try {
// ws.addCell(a);
// ws.addCell(b);
// } catch (RowsExceededException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// } catch (WriteException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
//
// for(int i=0;i<list.size();i++){
// Hashtable table =(Hashtable) list.get(i);
//
// Label label = new Label(j,i+1,table.get("id").toString());
// Label labela = new Label(j+1,i+1,table.get("title").toString());
// try {
// ws.addCell(label);
// ws.addCell(labela);
// } catch (RowsExceededException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (WriteException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
//
// 动态结束
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
/**
* 生成一个Excel文件POI
* @param inputFile 输入模板文件路径
* @param outputFile 输入文件存放于服务器路径
* @param dataList 待导出数据
* @throws Exception
* @roseuid:
*/
public static void exportExcelFile(String inputFile,String outputFile,List dataList) throws Exception{
//用模板文件构造poi
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
//创建模板工作表
HSSFWorkbook templatewb = new HSSFWorkbook(fs);
//直接取模板第一个sheet对象
HSSFSheet templateSheet = templatewb.getSheetAt(1);
//得到模板的第一个sheet的第一行对象 为了得到模板样式
HSSFRow templateRow = templateSheet.getRow(0);
//HSSFSheet timplateSheet = templatewb.getSheetAt(1);
//取得Excel文件的总列数
int columns = templateSheet.getRow((short) 0)
.getPhysicalNumberOfCells();
// Debug.println("columns is : " + columns); //=========================
//创建样式数组
HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];
//一次性创建所有列的样式放在数组里
for (int s = 0; s < columns; s++) {
//得到数组实例
styleArray[s] = templatewb.createCellStyle();
}
//循环对每一个单元格进行赋值
//定位行
for (int rowId = 1; rowId < dataList.size(); rowId++) {
//依次取第rowId行数据 每一个数据是valueList
List valueList = (List) dataList.get(rowId - 1);
//定位列
for (int columnId = 0; columnId < columns; columnId++) {
//依次取出对应与colunmId列的值
//每一个单元格的值
String dataValue = (String) valueList.get(columnId);
//取出colunmId列的的style
//模板每一列的样式
HSSFCellStyle style = styleArray[columnId];
//取模板第colunmId列的单元格对象
//模板单元格对象
HSSFCell templateCell = templateRow.getCell((short) columnId);
//创建一个新的rowId行 行对象
//新建的行对象
HSSFRow hssfRow = templateSheet.createRow(rowId);
//创建新的rowId行 columnId列 单元格对象
//新建的单元格对象
HSSFCell cell = hssfRow.createCell((short) columnId);
//如果对应的模板单元格 样式为非锁定
if (templateCell.getCellStyle().getLocked() == false) {
//设置此列style为非锁定
style.setLocked(false);
//设置到新的单元格上
cell.setCellStyle(style);
}
//否则样式为锁定
else {
//设置此列style为锁定
style.setLocked(true);
//设置到新单元格上
cell.setCellStyle(style);
}
//设置编码
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//Debug.println("dataValue : " + dataValue);
//设置值 统一为String
cell.setCellValue(dataValue);
}
}
//设置输入流
FileOutputStream fOut = new FileOutputStream(outputFile);
//将模板的内容写到输出文件上
templatewb.write(fOut);
fOut.flush();
//操作结束,关闭文件
fOut.close();
}
}
第二步 写个main 测试
public static void main(String[] args) {
String liu ="d:\\liuzm.xls"; //写入的路径
ExcelOpt t = new ExcelOpt();
t.writeExcel(liu);
}
本篇文章来源于 :刘志猛博客 原文链接:http://www.liuzm.com/article/java/969.htm
http://www.liuzm.com
所以在这里将介绍java 写Excel 基础操作
想对Excel进行之前,要引进一个包(jxl.jar)。本文章已提供下载
本文章写了二个例子,一个是对静态写入Excel 二是读出数据库的数据写入Excel
代码如下:
第一步 写一个 ExcelOpt 类
public class ExcelOpt {
/**
* 生成一个Excel文件 jxl
* @param fileName 要生成的Excel文件名
* @jxl.jar 版本:2.6
*/
public static void writeExcel(String fileName){
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("工作表名称", 0);
//下面开始添加单元格
//静态开始
// 静态的插入
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
try {
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
// 静态结束
// 动态开始 如果想参考动态的,就把静态块注释点
// 动态的插入表格
// int j=0; //Excel中 第一行是从0开始
// Dao dao = new Dao();// 自己写的一个dao
// List list = dao.voteList(); // 自己写一个你要从数据库读出数据的list
// Label a = new Label(0,0,"ID"); //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
// Label b = new Label(1,0,"标题");
// try {
// ws.addCell(a);
// ws.addCell(b);
// } catch (RowsExceededException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// } catch (WriteException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
//
// for(int i=0;i<list.size();i++){
// Hashtable table =(Hashtable) list.get(i);
//
// Label label = new Label(j,i+1,table.get("id").toString());
// Label labela = new Label(j+1,i+1,table.get("title").toString());
// try {
// ws.addCell(label);
// ws.addCell(labela);
// } catch (RowsExceededException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (WriteException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
//
// 动态结束
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
/**
* 生成一个Excel文件POI
* @param inputFile 输入模板文件路径
* @param outputFile 输入文件存放于服务器路径
* @param dataList 待导出数据
* @throws Exception
* @roseuid:
*/
public static void exportExcelFile(String inputFile,String outputFile,List dataList) throws Exception{
//用模板文件构造poi
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
//创建模板工作表
HSSFWorkbook templatewb = new HSSFWorkbook(fs);
//直接取模板第一个sheet对象
HSSFSheet templateSheet = templatewb.getSheetAt(1);
//得到模板的第一个sheet的第一行对象 为了得到模板样式
HSSFRow templateRow = templateSheet.getRow(0);
//HSSFSheet timplateSheet = templatewb.getSheetAt(1);
//取得Excel文件的总列数
int columns = templateSheet.getRow((short) 0)
.getPhysicalNumberOfCells();
// Debug.println("columns is : " + columns); //=========================
//创建样式数组
HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];
//一次性创建所有列的样式放在数组里
for (int s = 0; s < columns; s++) {
//得到数组实例
styleArray[s] = templatewb.createCellStyle();
}
//循环对每一个单元格进行赋值
//定位行
for (int rowId = 1; rowId < dataList.size(); rowId++) {
//依次取第rowId行数据 每一个数据是valueList
List valueList = (List) dataList.get(rowId - 1);
//定位列
for (int columnId = 0; columnId < columns; columnId++) {
//依次取出对应与colunmId列的值
//每一个单元格的值
String dataValue = (String) valueList.get(columnId);
//取出colunmId列的的style
//模板每一列的样式
HSSFCellStyle style = styleArray[columnId];
//取模板第colunmId列的单元格对象
//模板单元格对象
HSSFCell templateCell = templateRow.getCell((short) columnId);
//创建一个新的rowId行 行对象
//新建的行对象
HSSFRow hssfRow = templateSheet.createRow(rowId);
//创建新的rowId行 columnId列 单元格对象
//新建的单元格对象
HSSFCell cell = hssfRow.createCell((short) columnId);
//如果对应的模板单元格 样式为非锁定
if (templateCell.getCellStyle().getLocked() == false) {
//设置此列style为非锁定
style.setLocked(false);
//设置到新的单元格上
cell.setCellStyle(style);
}
//否则样式为锁定
else {
//设置此列style为锁定
style.setLocked(true);
//设置到新单元格上
cell.setCellStyle(style);
}
//设置编码
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
//Debug.println("dataValue : " + dataValue);
//设置值 统一为String
cell.setCellValue(dataValue);
}
}
//设置输入流
FileOutputStream fOut = new FileOutputStream(outputFile);
//将模板的内容写到输出文件上
templatewb.write(fOut);
fOut.flush();
//操作结束,关闭文件
fOut.close();
}
}
第二步 写个main 测试
public static void main(String[] args) {
String liu ="d:\\liuzm.xls"; //写入的路径
ExcelOpt t = new ExcelOpt();
t.writeExcel(liu);
}
本篇文章来源于 :刘志猛博客 原文链接:http://www.liuzm.com/article/java/969.htm
http://www.liuzm.com
发表评论
-
JAVA插入数据库时java.sql.DataTruncation: Data truncation
2010-05-21 16:42 891今天在做SQL2000的数据库数据交换下,报java.sql. ... -
我的官方博客,欢迎大家来访
2010-02-26 14:36 788http://liuzhimeng.com/ 关注java,, ... -
用Eclipse开发J2ME手机游戏入门(创建Hello)
2010-01-30 09:42 854http://www.liuzm.com/article/ja ... -
通过项目了解Calendar 时间日期应用
2010-01-30 09:41 1987通过项目了解Calendar 应用,这是自己写的一个小小的功能 ... -
JAVA插入数据库时java.sql.DataTruncation: Data truncation
2010-01-30 09:39 1835今天在做SQL2000的数据库数据交换下,报java.sql. ... -
java 时间求星期几
2010-01-30 09:38 1470在java项目中,时间是永远都不离不开的,不管什么项目,都有时 ... -
JAVA抽象类和接口的区别
2010-01-25 14:56 734这篇文章对抽象类和接 ... -
java四种操作xml方式的比较
2010-01-25 14:54 6741. 介绍 1)DOM(JAXP Crimson ... -
XML使用的五种场合
2010-01-25 14:53 699在很多研讨会和培训班 ... -
61条面向对象设计的经验原则
2010-01-25 14:52 54761条面向对象设计的经验原则: (1)所有数据都应该隐 ... -
JAVA - IO初步认识
2010-01-25 14:51 763IO 有初步认识,对IO包的学习引导 什么是IO ----- ... -
java调用windows 下dos命令
2010-01-25 14:48 865最近没事,想用JAVA写点调用WIN 的DOS命令 以下是我自 ... -
jsp使用URL传递中文参数乱码问题
2010-01-21 09:53 1414在项目中怎么解决参数乱码问题呢? 如下就是我在项目中解决的问题 ... -
HashTable和HashMap的区别
2010-01-21 09:52 1229HashTable和HashMap的区别 HashTable的 ... -
Java--List和Set
2010-01-21 09:51 1246List和Set的用法 容器类可以大大提高编程效率和编程能力, ... -
JAVA:String类、StringBuffer类、Math类。
2010-01-21 09:48 956JAVA:String类、StringBuffer类、Math ... -
使用String.split方法时要注意
2010-01-21 09:47 554使用String.split方法时要注意的问题 在使用Stri ... -
Hibernate中DetachedCriteria和Criteria的完整用法
2010-01-21 09:46 1124Hibernate中DetachedCriteria和Crit ... -
java replaceAll用法-模仿Google搜索关键字变红
2010-01-21 09:41 2136replaceAll用法-模仿Google搜索关键字变红 下面 ... -
java 求随机6个字符串
2010-01-19 14:51 824在项目中是不是常用到 随机数? 如下代码是 求随机6个字符串 ...
相关推荐
Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word的所有资料Java 操作Excel和Word...
java 生成Excel,可根据模板格式生成 Excel打印专用 报表 这个是旧版本的 ,需要新版本的 可以联系我
java中使用jxl打印excel报表,java中使用jxl打印excel报表,java中使用jxl打印excel报表
纯Java将用户关心的信息从数据库写入到Excel,形成Excel报表
绝对可以的,java生成excel报表 行和列
java操作Excel文件java操作Excel文件java操作Excel文件java操作Excel文件java操作Excel文件java操作Excel文件java操作Excel文件
java 操作excel表格经典例子,其内容全面而具体
java操作Excel java操作Excel java操作Excel
java操作excel的实例java操作excel的实例java操作excel的实例java操作excel的实例
通过Java操作Excel表格,包括上传Excel文件、Action类解析Excel、以及导出数据到Excel表格。
通过java操作excel表格的工具类库 用法简介 ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体、数字、日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说以上功能已经能够大致满足我们...
用java ,apache poi生成excel报表
详细介绍Java操作Excel,包括对Excel的读、写、更新等操作,并附加例子.
我整理的利用java代码导出数据库的数据 并保存到Excel表格当中 常用的 移植性高
java操作excel读写,可以根据自己的需要灵活修改。导入导出excel
Java操作Excel的开源库,JExcel,很好用的说
在excel文件中通过类似于jstl的语言制作excel模板文件产生报表,强力推荐 这个是全的!!!
java是不能提供java调用excel里的函数的,所以我提供这个例子,让大家参考,必须导入jxl.jar包哦!
JAVA操作EXCEL教程 POI JAVA操作EXCEL教程 POI
Java操作Excel