簡単なExcelファイルを生成します
実際のオフィスでは、多くの場合、要件があります。Excelで直接レポートを開設する必要があります。インターンシップ中にそのようなニーズがあります。選択したリソースに基づいてユーザーが提供する添付ファイルのすべての情報をクエリし、ダウンロード用のExcelを生成します。ただし、クエリするときは、ユーザー(IDカード)が提供する添付ファイルの情報にエラーがあるかどうかを確認する必要があります。エラー生成エラーメッセージExcelがあります。
ApacheのPOIプロジェクトは現在、Excelオブジェクトの処理に使用される比較的成熟したHSSFインターフェイスです。実際、POIはExcelを処理するだけでなく、Word、PowerPoint、Visio、さらには見通しを処理することもできます。
ここでは、最初にPOIを使用してExcelを生成する方法を紹介します。
まず、Excelを生成する前に、Excelファイルの組織を理解する必要があります。 POIでは、次のように理解されています。Excelファイルはワークブックに対応し、Workerbookはいくつかのシートで構成されています。シートには複数の行があり、行には一般に複数のセルがあります。
上記の4つの名詞については、下の図で理解できます
Excelを生成するために、POIは次の基本オブジェクトを提供します。
上記の写真とExcel組織構造から、Excelを作成する手順を理解できます。
1.ドキュメントオブジェクトHSSHWorkBookを生成します。
2。hssfworkbookを介してフォームhssfsheetを生成します。
3. hssfsheetを介して行を生成します
4. HSSFrowを介して細胞HSSFCELLを生成します。
これが表示コードです:
IDカードエラーBean(errorcondition.java)
public class errorcondition {private string name; //名前プライベート文字列idcard; // IDカードプライベート文字列ステータス。 //エラーステータスプライベート文字列メッセージ。 //エラーメッセージErrorCondition(文字列名、文字列idcard、文字列ステータス、文字列メッセージ){this.name = name; this.idcard = idcard; this.status = status; this.message = message; } public string getname(){return name; } public void setName(string name){this.name = name; } public string getIdCard(){return idcard; } public void setidcard(string idcard){this.idcard = idcard; } public string getStatus(){return status; } public void setStatus(string status){this.status = status; } public string getMessage(){return message; } public void setMessage(string message){this.message = message; }}処理クラス(ExporterRorexcel.java)
public class exporterRorexcel {public static void main(string [] args){//ステップ1ワークブックを作成するhssfworkbook wb = new hssfworkbook(); //ステップ2シートを作成するhssfsheetシート= wb.createsheet( "idカードエラーメッセージ"); //ステップ3行を作成する行:テーブルヘッダーの0行HSSFrow row = sheet.createrow(0); hssfcellstyle style = wb.createcellstyle(); style.setalignment(hssfcellstyle.align_center); //センター//ステップ4:セルを作成するhssfcellセル= row.createcell(0); //最初のセルセル.setCellValue( "name"); // value cell.setCellStyle(スタイル)を設定します。 //センターコンテンツセル= row.createcell(1); // 2番目のCell.setCellValue( "IDカード"); Cell.SetCellStyle(スタイル); cell = row.createcell(2); // 3番目のCell.setCellValue( "エラーステータス"); Cell.SetCellStyle(スタイル); cell = row.createcell(3); // 4番目のCell.setCellValue( "エラーメッセージ"); Cell.SetCellStyle(スタイル); // 5番目のステップ挿入データリスト<ErrorCondition>リスト= ExporterRorexcel.getErrorCondition(); for(int i = 0; i <list.size(); i ++){errorcondition errorcondition = list.get(i); // row = sheet.createrow(i+1)を作成します。 //セルを作成し、データrow.createcell(0).setCellValue(errorCondition.getName());を追加します。 row.createcell(1).setCellValue(errorcondition.getIdcard()); row.createcell(2).setCellValue(errorcondition.getStatus()); row.createCell(3).setCellValue(errorcondition.getMessage()); } //ステップ6生成されたExcelファイルを指定されたパスに保存してください{fileoutputStream fout = new fileoutputStream( "d://errorcondition.xls"); wb.write(fout); fout.close(); } catch(ioexception e){e.printstacktrace(); } system.out.println( "excel file生成に正常に..."); } public static list <ErrorCondition> getErrorCondition(){list <ErrorCondition> list = new ArrayList <ErrorCondition>(); ErrorCondition R1 = new ErrorCondition( "Zhang San"、 "43068219021611"、 "l"、 "長さエラー"); ErrorCondition R2 = new ErrorCondition( "li si"、 "430682198902191112"、 "x"、 "Error"); ErrorCondition R3 = new ErrorCondition( "Wang Wu"、 ""、 "n"、 "IDカード情報は空"); list.add(r1); list.add(r2); list.add(r3);返品リスト。 }}上記の6つのステップを通して、指定された場所でExcelファイルを生成できます。
Java POI実装は、写真をExcelに挿入します
Web開発を行うことは、Excelに対処することは避けられません。今日、上司は私にタスクを与えてくれました - エクスペルをエクスポートします。最初は非常に簡単だと思ったのは、検索、Excelの構築、応答のダウンロードだけでした。しかし、1つの違いがあります。つまり、写真を追加する必要があります。これは長い間追加されてきたものです。同時に、インターネットで良い情報は見つかりませんでしたので、私はこのブログ投稿を書き、私自身と私のブログの友人が質問と参照のためにそれを録音しました。
POIには、描画のトップマネージャーであるHSSFPATRIACHオブジェクトがあります。そのCreatePicture(Anchor、PictureIndex)メソッドは、Excelに画像を挿入できます。そのため、Excelに写真を挿入する必要があり、3つのステップで実行できます。 1. HSSFPATRIARCHオブジェクトを取得します。2。新しいHSSFCLIINTANCHORオブジェクト、3。CreatePictureメソッドを呼び出してください。実装は非常に簡単に実装できますが、それでもうまくやるのは少し難しいです。ここでは、最初に写真を挿入します。
public class excelimagetest {public static void main(string [] args){fileoutputstream fileout = null; bufferedimage bufferimg = null; //最初に写真の読み取りをbytearrayoutputStreamに入れてbytearray try {bytearrayoutputStream bytearrayout = new bytearrayoutputStream(); bufferimg = imageio.read(new file( "f:/picture/anounty/xiaozhao11.jpg")); Imageio.write(bufferimg、 "jpg"、bytearrayout); hssfworkbook wb = new hssfworkbook(); hssfsheet sheet1 = wb.createsheet( "テスト画像"); //描画のトップマネージャーは、1枚のシートのみを取得できます(この点に注意を払ってください)hssfpatriack patriarch = sheet1.createdrawingpatriach(); //アンカーは、主に写真の属性を設定するために使用されますhssfclientanchor anchor = new hssfclientanchor(0、0、255、255、(short)1、1、(short)5、8); anchor.setanchortype(3); // piction.createpicture(anchor、wb.addpicture(bytearrayout.tobytearray()、hssfworkbook.picture_type_jpeg)); fileout = new fileoutputStream( "d:/test excel.xls"); // excel fileに書き込みますwb.write(fileout); System.out.println( "--------"); } catch(Exception e){e.printstacktrace(); }最後に{if(fileout!= null){try {fileout.close(); } catch(ioexception e){e.printstacktrace(); }}}}}}}}}}}実行後の結果は次のとおりです。
この結果が主にHSSFClientanchor(0、0、255、255、(short)1、1、(short)5、8)コンストラクターが原因である理由について。以下にこのコンストラクターを説明しましょう:HSSFClientanchor(int dx1、int dy1、int dx2、int dy2、short col1、int row1、short col2、int row2)。各パラメーターの意味は次のとおりです。
ここでは、DX1とDY1が開始セルの画像の開始位置を定義し、DX2とDY2はENDセルのエンド位置を定義します。 COL1とROW1は、開始セル、COL2とROW2が端セルを定義します。
以下は、2つの異なるコンストラクターで作成されています。この写真から、上記の8つのパラメーターの意味と違いをはっきりと見ることができます。
上記は1つの写真を挿入することです。複数の写真を挿入するのはどうですか?実際、それは非常に簡単です。複数の異なるHSSFClientanchorオブジェクトを構築し、次のようにこれらの8つのパラメーターを制御します。
hssfclientanchor anchor1 = new hssfclientanchor(0、0、1023,100、(short)1、1、(short)5、8); hssfclientanchor anchor2 = new hssfclientanchor(0、0、1023,100、(short)1、9、(short)5、16); // piction.createpicture(anchor1、wb.addpicture(bytearrayout.tobytearray()、hssfworkbook.picture_type_jpeg)); patriarch.createpicture(anchor2、wb.addpicture(bytearrayout.tobytearray()、hssfworkbook.picture_type_jpeg));
コードの残りの部分は同じであり、次の結果が得られます。