1. 程式人生 > >[置頂]POI操作EXCEL之匯出Excel(設定有效性,下拉列表引用)

[置頂]POI操作EXCEL之匯出Excel(設定有效性,下拉列表引用)

//write 2003Excel
         public static void write2003Excel(String filePath,List list,String[][] data,String str) {

            try {
                if(list.size()<=60000){
               //建立excel檔案物件   

               HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath));
                //建立一個張表   
HSSFSheet sheet; //建立行物件 HSSFRow row = null; //建立表格物件 HSSFCell cell = null; sheet = wb.getSheetAt(0); // sheet.addValidationData(setDataValidation(sheet,data[1], 1,list.size(), 1, 1));
String[] num=data[data.length-1]; System.out.println(num.length); if (data.length>1) { for(int i=0;i<num.length;i++){ int rowdata=Integer.parseInt(num[i]); sheet.addValidationData(setDataValidation(sheet,data[i
+1], 1,list.size(),rowdata , rowdata)); System.out.println("我出現"+rowdata); } } if("00301".equals(str)){ String strFormula = "Sheet2!$A$2:$A$59" ; sheet.addValidationData(SetDataValidation(strFormula, 1, 5, list.size(), 5)); } row=sheet.createRow(0); for (int i = 0; i < data[0].length; i++) { cell=row.createCell(i); cell.setCellValue(data[0][i]); } //迴圈行 for (int i=1; i <=list.size(); i++) { row = sheet.createRow(i); //迴圈列 for (int j=0; j<data[0].length; j++) { cell = row.createCell(j);//建立單元格 String m=String.valueOf(list.get(i-1)).replace("[", "").replace("]", ""); String[] a=m.split(","); cell.setCellValue(a[j]);//賦值 // cell.setCellFormula("Sheet2!$A$2:$A$59"); } } //select Ahd010401,Ahd010405,Ahd010404,Ahd010409,Ahd010410,Ahd010406,Ahd010408,Ahd010416 from res_00301 if("00301".equals(str)){ String[] bzdata4={"民族","01-漢族","02-蒙古族","03-回族","04-藏族","05-維吾爾族","06-苗族","07-彝族","08-壯族","09-布依族","10-朝鮮族","11-滿族","12-侗族","13-瑤族","14-白族","15-土家族","16-哈尼族","17-哈薩克族","18-傣族","19-黎族","20-傈僳族","21-佤族","22-畲族","23-高山族","24-拉祜族","25-水族","26-東鄉族","27-納西族","28-景頗族","29-柯爾克孜族","30-土族","31-達斡爾族","32-仫佬族","33-羌族","34-布朗族","35-撒拉族","36-毛難族","37-仡佬族","38-錫伯族","39-阿昌族","40-普米族","41-塔吉克族","42-怒族","43-烏孜別克族","44-俄羅斯族","45-鄂溫克族","46-德昂族","47-保安族","48-裕固族","49-京族","50-塔塔爾族","51-獨龍族","52-鄂倫春族","53-赫哲族","54-門巴族","55-珞巴族","56-基諾族","98-外國血統","99-其他"}; sheet=wb.getSheetAt(1); for (int i = 0; i < bzdata4.length; i++) { row=sheet.createRow(i); cell=row.createCell(0); cell.setCellValue(bzdata4[i]); } } FileOutputStream out = new FileOutputStream(filePath); wb.write(out); out.close(); }else { throw new IOException("超出excel的可寫範圍,可寫為60000行"); } } catch (Exception e) { e.printStackTrace(); } }