使用POI将Mysql或Oracle中的数据导入到Excel中去_MySQL
在我们实际的开发中,表现层的解决方案虽然有多样,但是IE浏览器已成为最多人使用的浏览器,因为大家都用Windows。在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开。或者是:我们已经习惯用Excel打印。这样子如果用.net开发是没有问题的,.net用来进行这些数据导入导出支持的都是很好,如果你使用的是SQL Server数据库那就更方便了,笔者也曾体会到.net开发这些功能的方便性.但是有j2ee这个比.net更有前途的开放式的开发环境,难道我为了解决打印的要求去另写客户端的控件?或者在服务器端使用本地代码?第一种方案的问题是关键数据的处理有时候不能在客户端做,第2种方案的问题是牺牲了代码的可移植性和稳定性。如果让客户端只负责处理生成好的报表,那将是一种诱人的选择。
Apache的Jakata项目的POI子项目,目标是处理ole2对象。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。这是一个年轻的项目,所以象HDF这样直接支持Word对象的好东西仍然在设计中。其它支持word格式的纯java方案还有itext,不过也是仍在奋斗中。但是HSSF已经成熟到能够和足够我们使用了。另外,无锡永中Office的实现方案也是纯java的解决方案,不过那也是完全商业的产品,并不是公开代码项目。其实,从开发历史的角度讲,在80年代中期starOffice的原作者在德国成立了StarOffice suite公司,然后到1999年夏天starOffice被sun收购,再到2000年6月starOffice5.2的发布;并且从starOffice6.0开始,starOffice建立在OpenOffice的api的基础上,这个公开代码的office项目已经进行了很长的时间。虽然那是由C++写的,但是POI的代码部分也是由openOffice改过来的。所以,应该对POI充满足够的信心。国内已经有部分公司在他们的办公自动化等Web项目中使用poi了,如日恒的ioffice,海泰的HTOffice等。
java当初把核心处理设成Unicode,带来的好处是另代码适应了多语言环境。然而由于老外的英语只有26个字母,有些情况下,一些程序员用8位的byte处理,一不小心就去掉了CJK的高位。或者是由于习惯在程序中采用硬编码,还有多种原因,使得许多java应用在CJK的处理上很烦恼。还好在POI HSSF中考虑到这个问题,可以设置encoding为双字节。
POI可以到www.apache.org下载到。编译好的jar主要有这样4个:poi包,poi Browser包,poi hdf包,poi hssf例程包。实际运行时,需要有poi包就可以了。如果用Jakarta ant编译和运行,下载apache Jakarta POI的release中的src包,它里面已经为你生成好了build文件了。只要运行ant就可以了(ant 的安装和使用在此不说了)。如果是用Jbuilder 运行,请在新建的项目中加入poi包。以Jbuilder6为例,选择Tools菜单项的config libraries...选项,新建一个lib。在弹出的菜单中选择poi包,如这个jakarta-poi-1.5.1-final-20020820.jar,把poi添加到jbuilder中。然后,右键点击你的项目,在project的properties菜单中path的required Libraries中,点add,添加刚才加入到jbuilder中的poi到你现在的项目中。如果你仅仅是为了熟悉POI hssf的使用,可以直接看POI的samples包中的源代码,并且运行它。hssf的各种对象都有例程的介绍。hssf提供的例程在org.apache.poi.hssf.usermodel.examples包中,共有14个,生成的目标xls都是workbook.xls。如果你想看更多的例程,可以参考hssf的Junit test cases,在poi的包的源代码中有。hssf都有测试代码。
首先,到http://apache.justdn.org/jakarta/poi/release/bin/上去下载POI,登录到该网址以后,选择红色区域的poi-bin-2.5.1-final-20040804.zip来下载
下载以后解压,解压目录为
在Eclipse中设置对poi-bin-2.5.1-final-20040804.jar的库引用.
在Eclipse中新建一个名字叫POIExcel的Java工程,右键POIExcel项目的项目名,选择Build Path,再选择Add External Archives,然后找到poi-bin-2.5.1-final-20040804.jar这个包将其引进到工程中来.
Excel 结构
HSSFWorkbook excell 文档对象介绍
HSSFSheet excell的表单
HSSFRow excell的行
HSSFCell excell的格子单元
HSSFFont excell字体
HSSFName 名称
HSSFDataFormat 日期格式
辅助操作包括
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
将数据导出到Excel中的实例
1. 创建一个空白的Excel文件
我们创建一个最普通的Java应用程序即可,程序代码如下: HSSFWorkbook wb=new HSSFWorkbook();
FileOutputStream fileout = new FileOutputStream("C://test.xls");
wb.write(fileout);
fileout.close();
FileOutputStream属于JDK的数据流对象,通过它来将一个名为test.xls文件创建在C盘根目录下,运行该程序后可以看到在C盘上的根目录上多了一个Excel文件.
如果将程序中的FileOutputStream("C://test.xls")的参数改为"test.xls",则文件就会创建在该项目的根目录下.
2. 往Excel的单元格中写入信息
POI把Excel分解成几个对象,自顶向下的关系是:工作薄(HSSFWorkbook)->表格(HSSFSheet)->表格行(HSSFRow)->单元格(HSSFCell).将数据库中表的数据导入到Excel中,首先我们要将数据库中的表的数据查询出来,这里我们通过Hibernate来将数据库中addressbook_table表的数据查询出来.然后通过循环将表中的数据导入到Excel中去. HSSFWorkbook wb=new HSSFWorkbook();
HSSFSheet sheet=wb.createSheet("new sheet");
try ...{
//通过Hibernate来查询addressbook_table表中的数据,将其存储在List中
Transaction tx = session.beginTransaction();
org.hibernate.Query query= session.createQuery("from AddressbookTable");
List list = query.list();
tx.commit();
int k =0;
//创建表格,创建表格行和单元格,将数据库中表的字段存储在单元格中.
for(Iterator it=list.iterator();it.hasNext();)...{
AddressbookTable user =(AddressbookTable)it.next();
HSSFRow row=sheet.createRow((short)k);
row.createCell((short)0).setCellValue(user.getId());
row.createCell((short)1).setCellValue(user.getName());
row.createCell((short)2).setCellValue(user.getAddress());
row.createCell((short)3).setCellValue(user.getPhone());
k++;
}
FileOutputStream fileout = new FileOutputStream("C://test.xls");
wb.write(fileout);
fileout.close();
log.error("Successful!!");
} catch (HibernateException e) ...{
log.error("Insert Exception!");
e.printStackTrace();
}

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









데비안 시스템에서 Oracle 데이터베이스의 보안을 강화하려면 많은 측면이 시작되어야합니다. 다음 단계는 안전한 구성을위한 프레임 워크를 제공합니다. 1. Oracle 데이터베이스 설치 및 초기 구성 시스템 준비 : 데비안 시스템이 최신 버전으로 업데이트되었는지 확인하고 네트워크 구성이 올바르며 필요한 모든 소프트웨어 패키지가 설치되었습니다. 설치를 위해 공식 문서 또는 신뢰할 수있는 타사 리소스를 참조하는 것이 좋습니다. 사용자 및 그룹 : 전용 Oracle 사용자 그룹 (예 : Oinstall, DBA, BackupDBA)을 만들고 적절한 권한을 설정합니다. 2. 보안 제한을 설정하는 리소스 제한 사항 : 편집 /etc/security/limits.d/30-oracle.conf

내 코드가 API에 의해 데이터를 반환 할 수없는 이유는 무엇입니까? 프로그래밍에서 우리는 종종 API가 호출 될 때 NULL 값을 반환하는 문제를 겪는 경우가 종종 있습니다.

데비안 시스템 로그 모니터링 마스터 링은 효율적인 운영 및 유지 보수의 핵심입니다. 시스템의 작동 조건을 적시에 이해하고 결함을 신속하게 찾아 시스템 성능을 최적화하는 데 도움이됩니다. 이 기사는 일반적으로 사용되는 몇 가지 모니터링 방법 및 도구를 소개합니다. SYSSTAT 툴킷을 사용한 시스템 리소스 모니터링 SYSSTAT 툴킷은 CPU로드, 메모리 사용량, 디스크 I/O, 네트워크 처리량 등 다양한 시스템 리소스 메트릭을 수집, 분석 및보고하기위한 일련의 강력한 명령 라인 도구를 제공합니다. 주요 도구에는 다음이 포함됩니다. SAR : CPU, 메모리, 네트워크 등의 종합 시스템 자원 통계 도구 등이 포함됩니다. MPSTAT : 멀티 코어 CPU 통계. 피드 스타

Windows System Logs의 효율적인 읽기 : Bython을 사용하여 Windows System Log 파일 (.EVTX)을 처리 할 때 EVTX 파일을 역전시킵니다. 직접 읽기는 가장 빠른 것입니다 ...

언어의 멀티 스레딩은 프로그램 효율성을 크게 향상시킬 수 있습니다. C 언어에서 멀티 스레딩을 구현하는 4 가지 주요 방법이 있습니다. 독립 프로세스 생성 : 여러 독립적으로 실행되는 프로세스 생성, 각 프로세스에는 자체 메모리 공간이 있습니다. 의사-다일리트 레딩 : 동일한 메모리 공간을 공유하고 교대로 실행하는 프로세스에서 여러 실행 스트림을 만듭니다. 멀티 스레드 라이브러리 : PTHREADS와 같은 멀티 스레드 라이브러리를 사용하여 스레드를 만들고 관리하여 풍부한 스레드 작동 기능을 제공합니다. COROUTINE : 작업을 작은 하위 작업으로 나누고 차례로 실행하는 가벼운 다중 스레드 구현.

Python Binary Library (.WHL) 다운로드 방법은 Windows 시스템에 특정 라이브러리를 설치할 때 많은 Python 개발자가 겪는 어려움을 탐구합니다. 일반적인 해결책 ...

요청 라이브러리를 사용하여 웹 페이지 데이터를 크롤링 할 때 문제 및 솔루션이 발생합니다. 요청 라이브러리를 사용하여 웹 페이지 데이터를 얻을 때 때때로 ...

Pythonevtx 플러그인에서 오프셋 매개 변수를 할당하는 많은 Python 사용자가 EVTX 플러그인을 사용하여 Windows 이벤트 로그를 처리 할 때 오프셋이 발생합니다 ...
