jxl使用
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();
}
}
}