在java程序中如果将数据库表导出为EX表?

如题所述

Java操作Excel首先下载jar包 jxl.jar 下载地址: http://www.andykhan.com/jexcelapi/download.html我就下载的第一个 JExcelApi v2.6.8 (1920kbytes) 这个,解压后jexcelapi_2_6_8\jexcelapi\docs下的index.html为该jar包的API文档jexcelapi_2_6_8\jexcelapi下有一个jxl.jar将jxl.jar拷贝到你项目的lib目录下,就引入jar包了楼主的意思是从数据库读出数据,之后导出Excel文件,我写了一个小例子,我介绍一下我的程序内容:不知道你用什么数据库,我以oracle数据库的dept表为例dept表字段为数字类型的deptno,字符串类型的dname和loc,就这3个字段DBConn.java 类提供了两个方法,方法getConn()返回与数据库的连接Connection方法closeConn()关闭与数据库的连接Dept.java 是一个JavaBean,封装了dept表的一条记录,成员变量分别对应表dept的3个字段,并生成get和set方法DeptDao.java 类提供方法 public static List getDept(Connection conn)返回一个List集合,里面装的是一个个的Dept对象,每一个对象都包含了dept表的一条记录,总之就是这个集合里面包含了dept表的所有记录内容介绍了这么多,也是为了下面的测试类能看明白,测试类Test.javaimport java.io.File;import java.util.Iterator;import java.util.List;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class Test {public static void main(String[] args) {try {// 在D盘生成一个名为"Java操作Excel.xls"的Excel文件WritableWorkbook wwb = Workbook.createWorkbook(new File("D:/Java操作Excel.xls"));// 生成名为第一页的工作表,参数0表示这是第一页WritableSheet sheet = wwb.createSheet("第一页", 0);DBConn db = new DBConn();List<Dept> list = DeptDao.getDept(db.getConn());//声明一个保存数字的单元格,使用Number的完整包路径,写全包名,防止与java.lang包的Number发生冲突jxl.write.Number number;//声明Label对象的2个引用变量Label labe1;Label labe2;//i与j用于计数int i = 0;int j = 0;//遍历集合中的元素for (Iterator<Dept> iterator = list.iterator(); iterator.hasNext();) {Dept dept = iterator.next();/*** Number的构造方法 Number(第几列,第几行,数字内容)* Label 的构造方法 Label (第几列,第几行,字符串内容)* 0,0 表示第一列,第一行* (i, j, dept.getDeptno()) 将第一列,第一行,内容设置为dept.getDeptno()方法返回的数字类型字段deptno* (++i, j, dept.getDname()) 将第二列,第一行,内容设置为dept.getDname()方法返回的字符串类型字段dname* (++i, j, dept.getLoc()) 将第三列,第一行,内容设置为dept.getLoc()方法返回的字符串类型字段loc*/number = new jxl.write.Number(i, j, dept.getDeptno());labe1 = new Label(++i, j, dept.getDname());labe2 = new Label(++i, j, dept.getLoc());// 将定义好的单元格添加到工作表中sheet.addCell(number);sheet.addCell(labe1);sheet.addCell(labe2);/*** i = 0; 那么下次循环后开始还是第一列* j++; 那么下次循环后开始就是第二行*/i = 0;j++;}// 写入数据并关闭文件wwb.write();wwb.close();// 关闭数据库连接db.closeConn();} catch (Exception e) {e.printStackTrace();}}}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-22
首先要下载jexcelapi类包

import jxl.*;
import java.io.*;
class Xiang
{
public static void main(String[] args)
{
//声明一下,记得后面要关闭哦。。
Workbook workbook = null;

try {
workbook = Workbook.getWorkbook(new File("s.xls"));
} catch (Exception e) {
}

Sheet sheet = workbook.getSheet(0);
Cell cell = null;

int rowCount=sheet.getRows();
int columnCount=sheet.getColumns();
for (int i =0; i <rowCount; i++)
{
for (int j = 0; j <columnCount; j++)
{
//注意,这里的两个参数,第一个是表示列的,第二才表示行
cell=sheet.getCell(j, i);
//要根据单元格的类型分别做处理,否则格式化过的内容可能会不正确
System.out.print(cell.getContents());

//System.out.print(cell.getContents());
System.out.print("\t");
}
System.out.print("\n");
}
//关闭它,否则会有内存泄露
workbook.close();

}
}
第2个回答  2013-09-22
导入导出这个程序实现起来很麻烦的,
第3个回答  2013-09-22
你要的全在这里,还有源代码,自己看吧 http://www.javaeye.com/topic/107699

如何用java把一个网页表格生成excel
var ExWSh = ExWBk.worksheets(1)ExApp.DisplayAlerts = false ExApp.visible = true } catch(e){ alert("导出没有成功!1.您的电脑没有安装Microsoft Excel软件!2.请设置Internet选项自定义级别,对没有标记安全级别的 ActiveX控件进行提示。")return false } ExWBk.worksheets(1).Paste;}else...

之前已经录入数据库了,然后我想把这个程序的运行结果以窗口的形式显示...
rs.close();state.close();con.close();这三个语言不会有问题,那么还有一点点机会就是 rs=state.executeQuery(sql); 了。我不知道这会有会出问题,因为我从来不这么用。这么用是不合理的。你仅执行了一个 INSERT 操作,相应的方法是 execute 而不是 executeQuery。你并没有使用 rs,因此这个对...

java 发送邮件,内容是要从数据库中读取的数据并列成表格的状态发送出去...
\/\/ FileDataSource fds=new FileDataSource(fileName); \/\/得到数据源 \/\/ mbp.setDataHandler(new DataHandler(fds)); \/\/得到附件本身并至入BodyPart \/\/ mbp.setFileName(fds.getName()); \/\/得到文件名同样至入BodyPart \/\/ mp.addBodyPart(mbp); \/\/ }\/\/ mailMess...

java数据库增加数据,怎么在控制台输出表中的数据总数啊
把String sql="select * from student" 这条语句代码换成 String sql="select count(*) from student"就可以得到学生表所有记录数,然后在test方法里添加一个局部变量int rec=0;执行完sql语句后输出后用rec接收表的记录数 接下来用Object recontu = getObject(int columnIndex);然后把recountu转换成...

JAVA问题
CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程 CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器 CREATE SCHEMA --向数据库添加一个新模式 DROP SCHEMA --从数据库中删除一个...

请问中间层和内电层有什么区别?
以Java Applet为客户端, 以Java Servlet为中间层的三层网络结构,在实时网络信息平台得到了广泛的应用,其结构和一般的三层结构如图1所示。中间层中间层驱动工作原理注册表常识1、设备数据库所在的注册表健值为: HKLMSYSTEMCurrentControlSetEnum ENUM子项中是一个设备数据库,在数据库存放计算机中所有安装的,并且被系统...

hibernate大数据性能处理
update 新增PO时 请注意对PO中的集合的赋值操作 因为有可能使得多执行一次update操作 ) 在一对多 多对一的关系中 使用延迟加载机制 会使不少的对象在使用时方会初始化 这样可使得节省内存空间以及减少的负荷 而且若PO中的集合没有被使用时 就可减少互数据库的交互从而减少处理时间 数据库 什么叫n+ 次select查询...

如何使用eclipse调用数据库中的内容,并将数据显示出来?具体步骤和代 ...
我用的数据库是mysql,下载这个东东mysql-connector-java-5.1.15.zip解压把mysql-connector-java-5.1.15-bin.jar导入到你要连接数据库的项目中(应该知道怎么导入吧!)然后就是代码,以下代码是插入数据库的例子 import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.Action...

java 实现报表统计
java本身没有操作excel的工具,需要第三方的jar包,用jxl就可以,代码入下。jxl你上百度搜索后下载就可以,简单易用,不懂追问。public boolean exportExcel(HttpServletResponse response,List<cityinfo> list){ try { OutputStream os = response.getOutputStream();\/\/ 取得输出流 response.reset();\/...

java程序在Eclipse中运行没有问题,打包成.jar文件之后运行后路径出现...
URL url=new URL("jar:file:\\D:\\MapModule.jar!\\img\\map\\map.jpg");InputStream is=url.openStream();但我看你的意思是要往jar里面写入数据。我不建议这么做,你最好把上传的文件放到另一个文件或文件夹中,就像没有哪个exe文件把上传的文件放到自己的exe中。我没这么做过,如果你硬要往里写...

相似回答