jxl使用

6656 ワード

jxlは月レポートのようなexecleファイルを生成して、コードが少し死んでいるような気がします.毎月31日固定されています.アドバイスをください.ありがとうございます.
package com.rf.dwgj.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import jxl.Workbook;
import jxl.format.Alignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class ExpToExcel {//  Excel  
	
public static void expExcle(File file,List<Map<String,List<String>>> rows,String[] titles,String title) throws FileNotFoundException {
		
		OutputStream os= new FileOutputStream(file);
		WritableWorkbook workbook = null;
		
		try {
			//     Excel    
			workbook = Workbook.createWorkbook(os);
			//  Excel         ,   :   
			jxl.write.WritableSheet wsheet = workbook.createSheet(title, 0); // sheet();
			WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 14,//       
					WritableFont.BOLD, false,
					jxl.format.UnderlineStyle.NO_UNDERLINE,
					jxl.format.Colour.BLACK);
			WritableCellFormat titleFormat = new WritableCellFormat(titleFont);
			titleFormat.setAlignment(Alignment.CENTRE);//      
			wsheet.mergeCells(0,0, titles.length-1, 0);
			Label ybbTitle = new Label(0, 0, title, titleFormat);
			wsheet.addCell(ybbTitle);
			//     
			WritableFont font = new WritableFont(WritableFont.ARIAL, 11,//      
					WritableFont.BOLD, false,
					jxl.format.UnderlineStyle.NO_UNDERLINE,
					jxl.format.Colour.BLACK);
			WritableCellFormat format = new WritableCellFormat(font);
			for (int i = 0; i < titles.length; i++) {
				Label wlabel1 = new Label(i, 1, titles[i], format); //  、        、    
				wsheet.addCell(wlabel1);
				if(i==0||i==1){
					wsheet.setColumnView(i, 12); 
				}else{
					wsheet.setColumnView(i, 3); 
				}
				
			}
			font = new jxl.write.WritableFont(WritableFont.createFont("  "),
					12, WritableFont.NO_BOLD, false,
					jxl.format.UnderlineStyle.NO_UNDERLINE,
					jxl.format.Colour.BLACK);
			format = new jxl.write.WritableCellFormat(font);

			//       
			int flag = 0;//         
			for (int i = 1; i <= rows.size(); i++) {
				wsheet.mergeCells(0, i+1+flag, 0, i+2+flag);//     
				Map<String,List<String>> row = (Map<String,List<String>>) rows.get(i-1);
				System.out.println(row.size());
					Set<String> keys = row.keySet();
					Iterator<String> it = keys.iterator();
					List<String> infos = new ArrayList<String>();
					while(it.hasNext()){
						String info = (String)it.next();
						System.out.println("info"+info);
						infos.add(info);
						System.out.println("infos"+infos);
					}
					for(int j=2;j>=0;j--){
						Label label = null;
						if(j==2){//   j      i          0  
							String info = infos.get(j);
							System.out.println(info);
							label = new Label(0, i+1+flag , infos.get(2), format);
							System.out.println("label....."+label);
							wsheet.addCell(label);
						}
						if(j==0){
							List<String> sbkq = row.get("  ");
							for(int x=0;x<sbkq.size();x++){
								Label l1  = new Label(x+2,i+1+flag,sbkq.get(x),format);
								wsheet.addCell(l1);
							}
							label = new Label(1, i+1+flag , infos.get(0), format);
							wsheet.addCell(label);
						}
						if(j==1){
							List<String> xbkq = row.get("  ");
							label = new Label(1, i+2+flag , infos.get(1), format);
							for(int x=0;x<xbkq.size();x++){
								Label l1  = new Label(x+2,i+2+flag,xbkq.get(x),format);
								wsheet.addCell(l1);
							}
							wsheet.addCell(label);
						}
					}
					flag++;
				}
			workbook.write(); //     
			workbook.close();
		} catch (WriteException ex1) {
			System.out.println("WriteException:" + ex1.getMessage());
		} catch (IOException ex2) {
			System.out.println("IOException:" + ex2.getMessage());
		}
		
	}
	
	public static void main(String[] args) {
		File file = new File("D:\\test1\\test.xls");
		String[]titles = {"  ","   ","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"};
		//List<List<String>> rows = new ArrayList<List<String>>();
		List<Map<String,List<String>>> rows = new ArrayList<Map<String,List<String>>>();
		Map<String,List<String>> row = new TreeMap<String,List<String>>();
		Map<String,List<String>> row2 = new TreeMap<String,List<String>>();
		Map<String,List<String>> row3 = new TreeMap<String,List<String>>();
		List<String> info = new ArrayList<String>();
		
		for(int i=0;i<31;i++){
			info.add("√");
		}
		row.put("  ", info);
		row.put("  ", info);
		row.put("eee", null);
		
		
		row2.put("  ", info);
		row2.put("  ", info);
		row2.put("xxx", null);
		
		row3.put("  ", info);
		row3.put("  ", info);
		row3.put("qqq", null);
		rows.add(row);
		rows.add(row2);
		rows.add(row3);
		try {
			expExcleYbb(file, rows, titles, "test");
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}