アドバンテージ:
JXLは中国語を非常によくサポートしており、操作は単純であり、この方法は名前と意味に依存します。
JXLは純粋なJava APIであり、プラットフォーム全体で完全に機能します。コードは書き換えずにWindowsまたはLinuxで実行できます
Excel 95-2000のすべてのバージョンをサポートしています(現在はExcel 2007をサポートできるとオンラインで言われていますが、まだ試していません)
Excel 2000標準形式を生成します
サポートフォント、番号、日付操作
細胞特性を変更できます
画像とチャートはサポートされていますが、このAPIはグラフィックスとチャートのサポートが限られており、PNG形式のみを認識しています。
欠点:
POIよりも、非効率的で不完全な画像サポート、および形式の強力ではないサポート
場合:
string times =(new simpledateFormat( "yyyymmddhhmmss")) //ファイル名リスト<Logs> list = logsService.selectforList(hql.toString()); string path = request.getSession()。getServletContext()。getRealPath( "/") + "xls/" +(new simpledateFormat( "yyyymmdd"))。形式(new date()); file file = new file(path); // if(!file.exists()&&!file.isdirectory()){file.mkdir(); } respons.setContentType( "Application/vnd.ms-excel; charset = utf-8"); // //ファイルの保存タイプを指定します。 Response.setcharacterencoding( "utf-8"); exportutil.writer_log(request、fname、list、response); // localにダウンロードしますwriter_logエクスポート方法は次のとおりです
/*** excelファイルを生成してローカルコンピューターにエクスポート* @param fnameファイル名* @paramリストは、データベースクエリのデータリスト、つまり、データベースクエリのデータリスト*/public static void writer_log(httpservletrequest request、httpservletrequest request、string fname、list list、httpservletresponse応答Stream Response.reset(); //出力ストリームのクリア//次のことは、中国のファイル名応答の処理の開始です。Setcharacterencoding( "utf-8"); //対応するコンテンツのエンコード形式if(ismsbrowser(request))fname = java.net.urlencoder.encode(fname(fname); else fname = new String(fname.getBytes( "utf-8")、 "ISO-8859-1"); Response.setheader( "content-disposition"、 "attachment; filename ="+fname+"。xls"); Response.setContentType( "Application/MSEXCel; charset = utf-8"); //出力タイプを定義しますwritableworkbook wbook = workbook.createworkbook(OS); // ExcelファイルWritablesheetシート= wbook.createsheet( "System log"、0); //ワークシート名cellview cellview = new cellview(); cellview.setautosize(true); //自動サイズシートを設定します。SetColumnView(0、8); //セル幅を設定し、0は列番号、8は幅シートです。SetColumnView(1、20); //セルの幅を設定し、1は列番号、20は幅シートです。SetColumnView(2、24); Sheet.SetColumnView(3、20); Sheet.setColumnView(4、30); Sheet.SetColumnView(5、13); Sheet.setColumnView(6、15); Sheet.setColumnView(7、32); Sheet.SetColumnView(8、15); // excel font writablefont wfont = new writablefont(writablefont.createfont( "宋体")、22、writablefont.bold、false、jxl.format.underlinestyle.no_underline、jxl.format.colour.black); //セルフォントスタイルwritablecellformat titleformat = new writablecellformat(wfont); //セルフォントtitpleformat.setalignment(alignment.centre); //テキストセンタリングアライメントを設定します。 string [] title = {"system log"}; //(int i = 0; i <title.length; i ++){//ここでインポートされているのは、Excelテーブルヘッダーの開始を設定します。ラベルExceltitle = new Label(i、0、title [i]、titleformat); //セルコンテンツ//パラメーター順序:列を開始し、開始行、端列、end row sheet.mergecells(0、0、8、0); //場所、どの列、どの列sheet.addcell(exceltitle); //セル情報の追加} // Excelテーブルヘッダーエンドを設定します//最初の行、つまり表示時間、パラメーター:(列、行、コンテンツ)writablefont wfonttime = new writablefont( "宋体")、11、writablefont.no_bold、jxl.format.underlinestyle.no_dulline. jxl.format.colour.black); //セルフォントスタイルwritablecellformat titletime = new writablecellformat(wfonttime); //セルフォントtittletime.setalignment(alignment.right); //テキストセンタリングアライメントを設定します。 dateformat df = new SimpledateFormat( "yyyy-mm-dd"); // sheet.setColumnView(1、cellview); //コンテンツラベルContentDate = new Label(0、1、df.Format(new Date())、Titletime)に従って列幅を自動的に設定します。 //セルコンテンツ// sheet.mergecells(16、1、18、1); //列と列が列にある場所、つまりマージされた位置。マージがない場合は、sheet.addcell(contentdate)を書き込むことはできません。 //最初の行の追加//最初の行の終わり// 2番目の行には、条件タイトルBAR WRITOLFONT WFONT2 = new WritableFont(writablefont.createfont( "宋体")、11、writablefont.bold、false、jxl.format.underlinestyle.no_underline、jxl.format.colour.black); //セルフォントスタイルwritablecellformat titleformat2 = new writablecellformat(wfont2); //セルフォントタイトルFormat2.setborder(border.all、borderlinestyle.thin)を追加します。 //ボーダーソリッドラインを設定します。 titleformat2.setAlignment(alignment.centre); //テキストの中心アライメントを設定します。 titleformat2.setverticalAlignment(verticalAlignment.centre); //垂直センタリングを設定します。ラベルContent2a = new Label(0、2、 "Serial Number"、titleformat2); //セルコンテンツ - 1stグリッドラベルコンテンツ2B =新しいラベル(1、2、 "ユーザー名"、titleformat2); //セルコンテンツ - 2番目のグリッドラベルContent2c = new Label(2、2、 "Record Time"、titleFormat2); //セルコンテンツ - 3番目のグリッドラベルコンテンツ2c = newラベル(2、2、 "Record Time"、titleFormat2); //セルコンテンツ - 3番目のグリッドラベルコンテンツ2c = newラベル(2、2、 "Record Time"、titleFormat2); //セルコンテンツ - 3rdグリッドラベルContent2d = new Label(3、2、 "Operation Module"、titleFormat2); //セルコンテンツ - 4番目のグリッドラベルコンテンツ2E =新しいラベル(4、2、「操作コンテンツ」、titleformat2); //セルコンテンツ - 5番目のグリッドラベルContent2f = new Label(5、2、 "Operation Action"、titleFormat2); //セルコンテンツ - 6番目のグリッドラベルコンテンツ2G =新しいラベル(6、2、 "Operator IP"、titleFormat2); //セルコンテンツ - 7番目のグリッドラベルコンテンツ2H =新しいラベル(7、2、 "Operation Organization"、titleFormat2); //セルコンテンツ - 8番目のグリッドラベルContent2i = new Label(8、2、 "Note"、titleformat2); //セル含有量 - 9番目のグリッドシート。MergeCells(0、1、8、1); /* sheet.mergecells(0、2、0、4); //列と列が列にある場所、つまりマージの位置、マージがない場合、それを書くことはできません。 (以下は、開始行3から行5、列1)シート(1、2、1、4)です。 //列と列が列にある場所、つまりマージの位置、マージがない場合、それを書くことはできません。 (以下は、開始行3から行5、列2、列2)シート(2、2、2、4); //列と列が列にある場所、つまりマージされた位置、マージがない場合は、それを書くことができません。 (以下は、開始行3から行5、列3、列3)シート(3、2、3、4); //列と列が列にある場所、つまりマージされた位置、マージがない場合は、それを書くことができません。 (以下は、開始行3から行5、列4、列4)シート(4、2、4、4); //列と列が列にある場所、つまりマージされた位置、マージがない場合は、それを書くことができません。 (以下は、開始行3から行5、列5、列5)Sheet.MergeCells(5、2、5、4); //列と列が列にある場所、つまりマージされた位置、マージがない場合は、それを書くことができません。 (以下は、開始行3から行5、列6、列6)シート(6、2、6、4); //列と列が列にある場所、つまりマージされた位置、マージがない場合は、それを書くことができません。 (以下は、開始行3から行5、列7、列7)シート(7、2、7、4); //列と列が列にある場所、つまりマージされた位置、マージがない場合は、それを書くことができません。 (以下は、開始行3から行5、列8、列8)シート(8、2、8、4); //列と列が列にある場所、つまりマージの位置。マージがない場合、それを書くことはできません。 (以下は、開始行3から行5、列9、列9)シート(9、2、9、4); //列と列が列にある場所、つまりマージの位置。マージがない場合、それを書くことはできません。 (以下は、開始行3から行5、列10、列10)シート(10、2、12、3); //列と列が列にある場所、つまりマージの位置。マージがない場合、それを書くことはできません。 (以下は、開始行3から行4、列11-13です)Sheet.MergeCells(13、2、15、3); //行と列が最初の行にある場所、つまりマージされた位置、マージがない場合はそれを書くことはできません。 (以下は、開始行3から行4、列14-16です)Sheet.MergeCells(16、2、16、4); //行と列が最初の行にある場所、つまりマージされた位置、マージがない場合はそれを書くことはできません。 (以下は、開始行3から行5、列17)シート(17、2、17、4); //行と列が最初の行にある場所、つまりマージされた位置、マージがない場合はそれを書くことはできません。 (以下は、開始行3から行5、列18、列18)シート(18、2、18); //行と列が最初の行にある場所、つまりマージされた位置。マージがない場合、それを書くことはできません。 (以下は、開始行3から5、列19です) */ sheet.addcell(content2a); //最初のセル情報Sheet.AddCell(content2b)を追加します。 // 2番目のセル情報Sheet.AddCell(content2c)を追加します。 // 3番目のセル情報Sheet.AddCell(content2d)を追加します。 // 4番目のセル情報Sheet.AddCell(content2e)を追加します。 // 5番目のセル情報Sheet.AddCell(content2f)を追加します。 // 6番目のセル情報Sheet.AddCell(content2g)を追加します。 // 7番目のセル情報シートを追加します。AddCell(content2H); // 8番目のセル情報Sheet.AddCell(content2i)を追加します。 // 9番目のセル情報writablefont wf = new writablefont(writablefont.createfont( "安安")、11、writablefont.no_bold、false、jxl.format.underlinestyle.no_underline、jxl.format.colour.black); //セルフォントスタイルWritableCellFormat wcf = new WritableCellformat(WF)を設定します。 //セルフォントwcf.setborder(border.all、borderlinestyle.thin)を追加する; //境界線を設定します - 固体線。 wcf.setverticalAlignment(verticalAlignment.centre); //垂直アライメントwcf.setalignment(alignment.centre)を設定します。 //テキストの水平センターアラインメントを設定します。 wcf.setwrap(true); //自動ラインラップwritablefont wf1 = new writablefont(writablefont.createfont( "安体")、11、writablefont.no_bold、false、false、jxl.format.underlinestyle.no_underline、jxl.format.colour.black); //セルフォントスタイルwritablecellformat wcf1 = new writablecellformat(wf1); //セルフォントwcf1.setborder(border.left、borderlinestyle.thin)を追加します。 //ボーダーソリッドラインを設定します。 wcf1.setverticalAlignment(verticalAlignment.centre); //垂直アライメントwcf1.setalignment(alignment.centre)を設定します。 //テキストの水平センターアラインメントを設定します。 //次のループデータベースで取得された情報int c = 1; // iterator it = list.iterator()に使用されるexcelのライン番号; while(it.hasnext()){logs tc =(logs)it.next(); dateformat dfmt = new SimpledateFormat( "yyyy.mm"); string xh = string.valueof(c); if(xh == null){xh = ""; } label content0 = new Label(0、C+2、XH、WCF); //シリアル番号文字列name = tc.getusername(); if(name == null){name = ""; } label content1 = new label(1、c+2、name、wcf); // username string xrpresent = tc.getlogtime(); if(xrpresent == null){xrpresent = ""; } label content2 = new Label(2、C+2、Xrpresent、WCF); //録音時間文字列czmodel = tc.getModel(); if(czmodel == null){czmodel = ""; } label content3 = new Label(3、C+2、Czmodel、WCF); //操作モジュール文字列sex = tc.getContent(); if(sex == null){sex = ""; } label content4 = new Label(4、C+2、Sex、WCF); //操作コンテンツ文字列誕生日= tc.getoperate(); if(Birthind == null){Birthday = ""; } label content5 = new Label(5、C+2、誕生日、WCF); //操作アクションstring nation = tc.getip(); if(nation == null){nation = ""; } label content6 = new Label(6、C+2、Nation、WCF); //オペレーターIP String Origin = tc.getorgname(); if(origin == null){origin = ""; } label content7 = new Label(7、C+2、Origin、WCF); //または組織文字列bplace = tc.getRemark(); if(bplace == null){bplace = ""; } label content8 = new Label(8、c+2、bplace、wcf); // berem string abc = "";ラベルコンテンツ9 =新しいラベル(9、C+2、ABC、WCF1); // berem sheet.setrowview(c+2、600); //ラインの高さシートを設定します。SetRowView(C+2、600); Sheet.SetRowView(C+2、600); Sheet.SetRowView(C+2、600); Sheet.SetRowView(C+2、600); Sheet.SetRowView(C+2、600); Sheet.SetRowView(C+2、600); Sheet.SetRowView(C+2、600); Sheet.SetRowView(C+2、600); Sheet.MergeCells(0、C+2、0、C+2); // mergecells(1、c+2、0、c+2); // mergecells(a、b、c、d)セルマージファンクションシート。MergeCells(2、C+2、0、C+2); //セルカラム番号シート。MergeCells(3、C+2、0、C+2); // b細胞株番号sheet.mergecells(4、c+2、0、c+2); // cセル[a、b]から開始し、c列シートに合わせてマージします。MergeCells(5、C+2、0、C+2); // dセル[a、b]から、d行Dシート(6、c+2、0、c+2)にマージします。 Sheet.MergeCells(7、C+2、0、C+2); Sheet.MergeCells(8、C+2、0、C+2); Sheet.MergeCells(9、C+2、0、C+2); Sheet.AddCell(content0); Sheet.AddCell(content1); Sheet.AddCell(content2); Sheet.Addcell(content3); Sheet.AddCell(content4); Sheet.AddCell(content5); Sheet.AddCell(content6); Sheet.Addcell(content7); Sheet.AddCell(content8); Sheet.AddCell(content9); C ++; } wbook.write(); //ファイルに書き込みwbook.close(); os.close(); } catch(Exception e){新しいpaikeexception( "Export fileエラー"); }}JXLエクスポートデータのExcelへの上記の例は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。