- 浏览: 100997 次
- 性别:
- 来自: 武汉
最新评论
-
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 919今天在做SQL2000的数据库数据交换下,报java.sql. ... -
我的官方博客,欢迎大家来访
2010-02-26 14:36 827http://liuzhimeng.com/ 关注java,, ... -
用Eclipse开发J2ME手机游戏入门(创建Hello)
2010-01-30 09:42 900http://www.liuzm.com/article/ja ... -
通过项目了解Calendar 时间日期应用
2010-01-30 09:41 2013通过项目了解Calendar 应用,这是自己写的一个小小的功能 ... -
JAVA插入数据库时java.sql.DataTruncation: Data truncation
2010-01-30 09:39 1900今天在做SQL2000的数据库数据交换下,报java.sql. ... -
java 时间求星期几
2010-01-30 09:38 1506在java项目中,时间是永远都不离不开的,不管什么项目,都有时 ... -
JAVA抽象类和接口的区别
2010-01-25 14:56 766这篇文章对抽象类和接 ... -
java四种操作xml方式的比较
2010-01-25 14:54 7291. 介绍 1)DOM(JAXP Crimson ... -
XML使用的五种场合
2010-01-25 14:53 735在很多研讨会和培训班 ... -
61条面向对象设计的经验原则
2010-01-25 14:52 57561条面向对象设计的经验原则: (1)所有数据都应该隐 ... -
JAVA - IO初步认识
2010-01-25 14:51 796IO 有初步认识,对IO包的学习引导 什么是IO ----- ... -
java调用windows 下dos命令
2010-01-25 14:48 893最近没事,想用JAVA写点调用WIN 的DOS命令 以下是我自 ... -
jsp使用URL传递中文参数乱码问题
2010-01-21 09:53 1454在项目中怎么解决参数乱码问题呢? 如下就是我在项目中解决的问题 ... -
HashTable和HashMap的区别
2010-01-21 09:52 1267HashTable和HashMap的区别 HashTable的 ... -
Java--List和Set
2010-01-21 09:51 1273List和Set的用法 容器类可以大大提高编程效率和编程能力, ... -
JAVA:String类、StringBuffer类、Math类。
2010-01-21 09:48 1014JAVA:String类、StringBuffer类、Math ... -
使用String.split方法时要注意
2010-01-21 09:47 580使用String.split方法时要注意的问题 在使用Stri ... -
Hibernate中DetachedCriteria和Criteria的完整用法
2010-01-21 09:46 1154Hibernate中DetachedCriteria和Crit ... -
java replaceAll用法-模仿Google搜索关键字变红
2010-01-21 09:41 2201replaceAll用法-模仿Google搜索关键字变红 下面 ... -
java 求随机6个字符串
2010-01-19 14:51 886在项目中是不是常用到 随机数? 如下代码是 求随机6个字符串 ...
相关推荐
Java操作Excel的开源库在开发过程中常常被广泛使用,特别是在数据处理、报表生成以及与用户交互的场景下。JExcelAPI是一个这样的库,它允许Java开发者方便地读取、写入以及修改Microsoft Excel文件,无需依赖Excel...
通过以上步骤,你可以使用Apache POI高效地操作Excel,轻松制作各种报表。无论你是要批量导入数据,还是创建复杂的计算表格,Apache POI都能提供强大的支持。结合适当的工具,如IDEA的插件,可以进一步提升开发效率...
总的来说,`jxl.jar`为Java程序员提供了一个简洁的接口,使他们能够轻松地与Excel文件交互,无论是进行数据导入、导出还是复杂的报表生成。熟悉这个库的使用,将极大地提高你在数据处理方面的效率。
**使用JasperReports制作报表(导出PDF, Excel, HTML)** JasperReports是一款开源的Java报表库,它允许开发者创建、设计和显示复杂的报告。这个教程将介绍如何使用JasperReports来制作报表,并将其导出为PDF、...
在博文《使用jxls轻松制作excel报表》中,作者可能详细介绍了如何设置模板,如何创建和使用`JexlContext`,以及如何处理各种复杂的业务逻辑。此外,可能还提供了示例代码和实战案例,帮助读者更好地理解和掌握jxls的...
在IT行业中,生成灵活的Excel导出是许多应用程序的核心需求,尤其在数据分析、报表生成以及数据交换场景下。本文将详细介绍如何使用JXLS库结合Excel模板来实现这一功能。 JXLS(Java Excel Library)是一个强大的...
JXL库是一个流行的选择,它允许开发者用Java语言轻松地读写Microsoft Excel文件。本篇将深入探讨“Excel报表JXL类型”以及如何在Java中使用JXL库来从数据库读取和排列数据。 首先,JXL库提供了丰富的API,可以创建...
iReport是一款基于JAVA的开源报表设计工具,专为开发人员和数据分析师提供强大的报表制作功能。它允许用户通过直观的图形界面设计复杂的报表,并能够与Java应用程序、JasperReports库和其他基于Java的企业应用无缝...
2. **报表项目实践**:"My Reports"目录下的内容可能包含用户根据学习指南创建的示例报表项目,这些项目可以帮助学习者通过实际操作掌握BIRT的各种功能,如数据源连接、报表布局、图表制作、参数化和数据过滤等。...
4. **JFreeReport**:JFreeReport是一个Java类库,用于生成报表并支持打印及输出到PDF、Excel、HTML等格式。它为Java应用程序提供了灵活的打印和报告功能。 5. **jCharts**:jCharts是一个纯Java的图表生成工具,可...
在"JasperReports,iReport制作报表"这个主题中,"功能JAR导入直接运行"意味着你需要将JasperReports库和iReport相关的JAR文件添加到你的项目类路径中。这些库包含了运行报表所需的所有组件,包括报表引擎、设计工具...
这样的设计使得即使对Excel操作不熟悉的开发者也能轻松实现报表导出。 值得注意的是,虽然这里提到的是Excel,但类似的工具类往往也支持其他格式,如CSV、PDF等。此外,如果需要更复杂的功能,如动态图表、条件格式...
在IT行业中,Excel数据处理是一项常见且重要的任务,特别是在数据分析、报表制作以及数据交换等领域。JXL库是Java中用于处理Excel文件的一个流行选择,它提供了读取、写入和修改Excel文件的功能。本篇文章将深入探讨...
Excel支持丰富的数据格式、计算功能、图表制作和数据分析工具。它的文件格式通常为.xlsx或.xls。Excel报表可用于财务分析、数据可视化、项目管理等多种场景,用户可以自定义公式、样式和交互式元素,提高数据处理的...
在"JasperReports结合iReport制作报表教程.pdf"这份文档中,你将学习到以下内容: 1. **安装和配置iReport**:包括下载最新版本,配置Java环境,以及关联数据库驱动等步骤。 2. **新建报表项目**:了解如何创建一个...
### 使用iReport和JasperReport制作报表 1. 启动iReport,新建一个报表项目,可以选择不同的报表类型(如表格、图表等)。 2. 在设计视图中,通过拖放方式添加字段、文本框、图表等元素,调整它们的布局和样式。 ...
总结来说,"超简单超炫的J2EE报表制作"项目涵盖了J2EE应用开发、MYECLIPSE IDE使用、水晶报表设计与数据可视化、MVC模式、数据库操作以及可能的Spring框架应用等多个关键知识点。这些技术的结合使得该项目能够提供一...
以下是使用JasperReports和iReport制作报表的步骤: 1. **安装和配置**:首先,你需要下载并安装JasperReports库和iReport工具。确保你的开发环境支持Java,因为两者都需要Java运行环境。 2. **创建数据源**:在...
### Cognos自定义导出PDF与Excel...通过上述步骤,可以在Cognos环境中轻松实现自定义导出功能,不仅提高了用户的操作便捷性,还增加了系统的灵活性。此外,通过对导出格式的支持进行扩展,能够满足更广泛的业务需求。