ホームページ データベース mysql チュートリアル 使用POI将Mysql或Oracle中的数据导入到Excel中去_MySQL

使用POI将Mysql或Oracle中的数据导入到Excel中去_MySQL

Jun 01, 2016 pm 01:59 PM
つまりブラウザ oracle windows

在我们实际的开发中,表现层的解决方案虽然有多样,但是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来下载

使用POI将Mysql或Oracle中的数据导入到Excel中去(图一)

下载以后解压,解压目录为
使用POI将Mysql或Oracle中的数据导入到Excel中去(图二)

 在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();
    }

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DebianでOracleセキュリティ設定を行う方法 DebianでOracleセキュリティ設定を行う方法 Apr 02, 2025 am 07:48 AM

Debianシステム上のOracleデータベースのセキュリティを強化するには、開始するには多くの側面が必要です。次の手順は、セキュアな構成のフレームワークを提供します。1。Oracleデータベースのインストールと初期構成システムの準備:Debianシステムが最新バージョンに更新され、ネットワーク構成が正しく、必要なすべてのソフトウェアパッケージがインストールされていることを確認します。インストールのために公式文書または信頼できるサードパーティのリソースを参照することをお勧めします。ユーザーとグループ:専用のOracleユーザーグループ(OINSTALL、DBA、BackUpDBAなど)を作成し、適切なアクセス許可を設定します。 2。セキュリティ制限リソース制限の設定:edit /etc/security/limits.d/30-oracle.conf

なぜ私のコードはAPIによってデータを返しているのですか?この問題を解決する方法は? なぜ私のコードはAPIによってデータを返しているのですか?この問題を解決する方法は? Apr 01, 2025 pm 08:09 PM

なぜ私のコードはAPIによってデータを返しているのですか?プログラミングでは、APIが呼び出すときにヌル値を返すという問題に遭遇することがよくあります。

Debianログを介してシステムのパフォーマンスを監視する方法 Debianログを介してシステムのパフォーマンスを監視する方法 Apr 02, 2025 am 08:00 AM

Debianシステムログ監視のマスターは、効率的な動作とメンテナンスの鍵です。システムの動作条件をタイムリーに理解し、障害をすばやく見つけ、システムのパフォーマンスを最適化するのに役立ちます。この記事では、一般的に使用されるいくつかの監視方法とツールを紹介します。 SysStat Toolkitを使用したシステムリソースの監視SysStat Toolkitは、CPUロード、メモリ使用量、ディスクI/O、ネットワークスループットなど、さまざまなシステムリソースメトリックを収集、分析、レポートするための一連の強力なコマンドラインツールを提供します。 MPSTAT:マルチコアCPUの統計。ピドスタ

Windowsシステムログを効率的に読み取り、ここ数日から情報のみを取得する方法は? Windowsシステムログを効率的に読み取り、ここ数日から情報のみを取得する方法は? Apr 01, 2025 pm 11:21 PM

Windowsシステムログの効率的な読み取り:Pythonを使用してWindowsシステムログファイル(.EVTX)を処理する場合、EVTXファイルを逆転させます。

Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Pythonクロスプラットフォームデスクトップアプリケーション開発:どのGUIライブラリが最適ですか? Apr 01, 2025 pm 05:24 PM

Pythonクロスプラットフォームデスクトップアプリケーション開発ライブラリの選択多くのPython開発者は、WindowsシステムとLinuxシステムの両方で実行できるデスクトップアプリケーションを開発したいと考えています...

Windowsの下のpython .whlファイルをどこからダウンロードしますか? Windowsの下のpython .whlファイルをどこからダウンロードしますか? Apr 01, 2025 pm 08:18 PM

Pythonバイナリライブラリ(.whl)のダウンロードメソッドは、Windowsシステムに特定のライブラリをインストールする際に多くのPython開発者が遭遇する困難を調査します。一般的な解決策...

マルチスレッドをC言語で実装する4つの方法 マルチスレッドをC言語で実装する4つの方法 Apr 03, 2025 pm 03:00 PM

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

Webページデータを取得するときに動的読み込みコンテンツが欠落の問題を解決する方法は? Webページデータを取得するときに動的読み込みコンテンツが欠落の問題を解決する方法は? Apr 01, 2025 pm 11:24 PM

リクエストライブラリを使用してWebページのデータをクロールするときに遭遇する問題とソリューション。リクエストライブラリを使用してWebページデータを取得すると、時々遭遇します...

See all articles