首页 > 代码库 > 关于excel的导出
关于excel的导出
1 public static void excelOutput(final String templePath,final List dataList, final List staffCdList,final String path,final String fileNam) { 2 try { 3 // テンポレトの位置 4 String url = templePath; 5 // テンポレトを取得 6 POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(url));//url为excel模板放的地址 7 // 新規Workbook 8 HSSFWorkbook wb = new HSSFWorkbook(fs); 9 // スタッフCd数による シートを新規 10 for (int i = 0; i < staffCdList.size() - 1; i++) { 11 // コピ第一シート 12 wb.cloneSheet(0); 13 } 14 HSSFRichTextString hs = new HSSFRichTextString(); 15 // 時間格式 16 SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd"); 17 Date date = new Date(); 18 // スタッフデータvo 19 HakenDaityouVO staffVo = new HakenDaityouVO(); 20 // excelへデータを出力する 21 for (int i = 0; i < staffCdList.size(); i++) { 22 staffVo = (HakenDaityouVO) staffCdList.get(i); 23 // スタッフCd 24 String staffCd = staffVo.getStaffCd().trim(); 25 // シート名を設定 26 wb.setSheetName(i, staffCd);//sheet的名字 27 // シートを取得 28 HSSFSheet sheet = wb.getSheetAt(i); 29 if(i==0){ 30 sheet.setSelected(true); 31 } else{ 32 sheet.setSelected(false); 33 } 34 // シートの第3行を取得 35 HSSFRow row = sheet.getRow(3); 36 // 第3行の第2列を取得 37 HSSFCell cell = row.getCell((short) 2); 38 // 派遣元事業所名 39 String hmjigyoNam = staffVo.getHmjigyoNam(); 40 hmjigyoNam = setString(hmjigyoNam); 41 hs = new HSSFRichTextString(hmjigyoNam); 42 // 設定第3行第2列の内容は派遣元事業所名 43 cell.setCellValue(hs); 44 45 // 第3行の第4列を取得 46 cell = row.getCell((short) 4); 47 // 派遣元事業所住所 48 String hmjigyouAddr = staffVo.getHmjigyouAddr(); 49 hmjigyouAddr = setString(hmjigyouAddr); 50 hs = new HSSFRichTextString(hmjigyouAddr); 51 // 設定第4行第3列の内容は派遣元事業所住所 52 cell.setCellValue(hs); 53 54 // 第3行の第5列を取得 55 cell = row.getCell((short) 5); 56 String hmjigyoTel = staffVo.getHmjigyoTel(); 57 hmjigyoTel = setString(hmjigyoTel); 58 if (hmjigyoTel.equals(" ")) { 59 hmjigyoTel = " "; 60 } 61 // 派遣元事業所FAX 62 String hmjigyoFax = staffVo.getHmjigyoFax(); 63 hmjigyoFax = setString(hmjigyoFax); 64 StringBuffer buffer = new StringBuffer(); 65 buffer.append(" TEL: " + hmjigyoTel + " "); 66 buffer.append("FAX: " + hmjigyoFax); 67 hs = new HSSFRichTextString(buffer.toString()); 68 // 設定第3行第5列の内容は派遣元事業所TEL FAX 69 cell.setCellValue(hs); 70 71 // シートの第4行を取得 72 row = sheet.getRow(4); 73 // 第4行の第2列を取得 74 cell = row.getCell((short) 2); 75 // スタッフ登録店名 76 String staffTenNam = staffVo.getStaffTenNam(); 77 staffTenNam = setString(staffTenNam); 78 hs = new HSSFRichTextString(staffTenNam); 79 // 設定第4行第2列の内容はスタッフ登録店名 80 cell.setCellValue(hs); 81 82 // 第4行の第4列を取得 83 cell = row.getCell((short) 4); 84 // スタッフCD,派遣社員名 85 String staffNam = staffVo.getStaffNam(); 86 staffNam = setString(staffNam); 87 String staff = staffCd + " " + staffNam; 88 hs = new HSSFRichTextString(staff); 89 // 設定第4行第4列の内容はスタッフCD,派遣社員名 90 cell.setCellValue(hs); 91 // 同じなスタッフの記録数 92 int cnt = 0; 93 for (int j = 0; j < dataList.size(); j++) { 94 // Create a cell format for Arial 10 point font 95 staffVo = (HakenDaityouVO) dataList.get(j); 96 String staffCd1 = staffVo.getStaffCd(); 97 // 同じなスタッフ、記録数が不足30の場合、データを出力する 98 if (staffCd1.equals(staffCd) && cnt < 30) { 99 // 日付(”-” ⇒ ”/”に変更) 100 String ymd = staffVo.getYmd();101 ymd = ymd.replace("-", "/");102 ymd = setString(ymd);103 // シートの第6 + 2 * cnt行を取得104 row = sheet.getRow(6 + 2 * cnt);105 // 第6 + 2 * cnt行の第0列を取得106 cell = row.getCell((short) 0);107 date = ft.parse(ymd);108 // 設定第6 + 2 * cnt行第0列の内容は日付109 cell.setCellValue(date);110 111 // 作業開始時刻(秒単位は表示しない)112 String startTime = staffVo.getStartTime();113 startTime = setString(startTime);114 if (startTime.length() >= 5) {115 startTime = startTime.trim().substring(0, 5);116 }117 // 作業開始時刻(秒単位は表示しない)118 String endTime = staffVo.getEndTime();119 endTime = setString(endTime);120 if (endTime.length() >= 5) {121 endTime = endTime.trim().substring(0, 5);122 }123 String time = " ";124 // 作業開始時刻と作業開始時刻がnull の場合125 if (!(startTime.equals(" ") && endTime.equals(" "))) {126 time = startTime + "/" + endTime;127 }128 hs = new HSSFRichTextString(time);129 // 第6 + 2 * cnt行の第1列を取得130 cell = row.getCell((short) 1);131 // 設定第6 + 2 * cnt行第1列の内容は作業開始時刻/作業開始時刻132 cell.setCellValue(hs);133 134 // 休憩時間135 String restTime = staffVo.getRestTime();136 restTime = setString(restTime);137 // 残業時間138 String overTime = staffVo.getOverTime();139 overTime = setString(overTime);140 if(restTime.equals(" ")&& overTime.equals(" ")){141 time = " ";142 } else{143 time = restTime + "/" + overTime;144 }145 hs = new HSSFRichTextString(time);146 // 第6 + 2 * cnt行の第2列を取得147 cell = row.getCell((short) 2);148 // 設定第6 + 2 * cnt行第1列の内容は休憩時間/残業時間149 cell.setCellValue(hs); 150 151 // 事業所(業務)名称152 String gyoumNam = staffVo.getGyoumNam();153 gyoumNam = setString(gyoumNam);154 hs = new HSSFRichTextString(gyoumNam);155 // 第6 + 2 * cnt行の第3列を取得156 cell = row.getCell((short) 3);157 // -------------修正 2009-1-19 start--------------158 // 新規字体格式159 HSSFFont font = wb.createFont();160 // 字体タイプ161 font.setFontName("MS Pゴシック");162 // 字体大小163 font.setFontHeightInPoints((short) 9);164 // 新規風格165 HSSFCellStyle style1 = wb.createCellStyle();166 // セルの風格を取得167 style1 = cell.getCellStyle(); 168 // 内容の長さ>新規セルの長さの場合 内容の字体が小さくなる 169 if(hs.length()> 50){170 font.setFontHeightInPoints((short)8); 171 }172 // 風格に字体格式を設定173 style1.setFont(font);174 // セルに風格を設定175 cell.setCellStyle(style1);176 // -------------修正 2009-1-19 end--------------177 // 設定第6 + 2 * cnt行第3列の内容は事業所(業務)名称178 cell.setCellValue(hs);179 180 // 事業所住所 181 String hakenBasyoNam = staffVo.getHakenBasyoNam();182 hakenBasyoNam = setString(hakenBasyoNam);183 String hakenAddr = staffVo.getHakenAddr();184 hakenAddr = setString(hakenAddr);185 String jimuBasyo = hakenBasyoNam + " " + hakenAddr;186 hs = new HSSFRichTextString(jimuBasyo);187 // 第6 + 2 * cnt行の第4列を取得188 HSSFCell hakencell = row.getCell((short) 4);189 // -------------修正 2009-1-19 start--------------190 // 新規字体格式191 HSSFFont font1 = wb.createFont();192 // 字体タイプ193 font1.setFontName("MS Pゴシック");194 // 字体大小195 font1.setFontHeightInPoints((short) 9);196 // 新規風格197 HSSFCellStyle style2 = wb.createCellStyle();198 setStyle(style1,style2);199 // 内容の長さ>新規セルの長さの場合 内容の字体が小さくなる200 if (hs.length() > 50) {201 font1.setFontHeightInPoints((short) 8);202 }203 // 風格に字体格式を設定204 style2.setFont(font1);205 // セルに風格を設定206 hakencell.setCellStyle(style2);207 // 設定第6 + 2 * cnt行第4列の内容は事業所(業務)名称208 hakencell.setCellValue(hs);209 // -------------修正 2009-1-19 end--------------210 211 // 業務内容212 String gyoumNaiyou = staffVo.getGyoumNaiyou();213 gyoumNaiyou = setString(gyoumNaiyou);214 hs = new HSSFRichTextString(gyoumNaiyou);215 // 第6 + 2 * cnt行の第5列を取得216 cell = row.getCell((short) 5); 217 // -------------修正 2009-1-19 start--------------218 // 新規字体格式219 HSSFFont font2 = wb.createFont();220 // 字体タイプ221 font2.setFontName("MS Pゴシック");222 // 字体大小223 font2.setFontHeightInPoints((short) 9);224 // 新規風格225 HSSFCellStyle style3 = wb.createCellStyle();226 setStyle(style1,style3);227 // 内容の長さ>新規セルの長さの場合 内容の字体が小さくなる228 if (hs.length() > 70) {229 font2.setFontHeightInPoints((short) 8);230 }231 // 風格に字体格式を設定232 style3.setFont(font2);233 // セルに風格を設定234 cell.setCellStyle(style3);235 // -------------修正 2009-1-19 end--------------236 // 設定第6 + 2 * cnt行第5列の内容は業務内容237 cell.setCellValue(hs);238 239 240 241 // 派遣先責任者名242 String hakenNam = staffVo.getHakenNam();243 hakenNam = setString(hakenNam);244 hs = new HSSFRichTextString(hakenNam);245 // 第6 + 2 * cnt行の第6列を取得246 cell = row.getCell((short) 6);247 // 設定第6 + 2 * cnt行第6列の内容は派遣先責任者名248 cell.setCellValue(hs);249 250 // 派遣元責任者名251 String hmempNam = staffVo.getHmempNam();252 hmempNam = setString(hmempNam);253 hs = new HSSFRichTextString(hmempNam);254 // 第6 + 2 * cnt行の第7列を取得255 cell = row.getCell((short) 7);256 // 設定第6 + 2 * cnt行第7列の内容は派遣元責任者名257 cell.setCellValue(hs);258 259 // 健康保険,厚生年金保険,雇用保険260 String str1 = "未加入";261 for (int k = 0; k < 3; k++) {262 hs = new HSSFRichTextString(str1);263 // 第6 + 2 * cnt行の第8+k列を取得264 cell = row.getCell((short) (8 + k));265 // 設定第6 + 2 * cnt行第8+k列の内容は"未加入"266 cell.setCellValue(hs);267 }268 // 社会保険手続状況269 String str2 = "1日ごとの雇用契約で1ヶ月を越える継続的雇用が見込めない為未手続";270 hs = new HSSFRichTextString(str2);271 // 第6 + 2 * cnt行の第11列を取得272 cell = row.getCell((short) 11);273 // 設定第6 + 2 * cnt行第11列の内容は"1日ごとの雇用契約で2ヶ月を越える継続的雇用が見込めない為未手続"274 cell.setCellValue(hs);275 276 // シートの第7 + 2 * cnt行を取得277 row = sheet.getRow(7 + 2 * cnt);278 // 派遣先責任者連絡先279 String hakenTel = staffVo.getHakenTel();280 hakenTel = setString(hakenTel);281 hs = new HSSFRichTextString(hakenTel);282 // 第7 + 2 * cnt行の第6列を取得283 cell = row.getCell((short) 6);284 // 設定第7 + 2 * cnt行の第6列の内容は派遣先責任者連絡先285 cell.setCellValue(hs);286 287 String hmjigyoTele = staffVo.getHmjigyoTel();288 hmjigyoTele = setString(hmjigyoTele);289 hs = new HSSFRichTextString(hmjigyoTele);290 // 第7 + 2 * cnt行の第7列を取得291 cell = row.getCell((short) 7);292 // 設定第7 + 2 * cnt行の第7列の内容は派遣元責任者連絡先293 cell.setCellValue(hs);294 // 同じスタッフデータ数295 cnt++;296 }297 }298 }299 300 File f = new File(path);301 // 指定パースがない場合 生成パス302 if(!f.exists()){303 f.mkdirs();304 }305 // 生成するファイルパス 306 FileOutputStream fos = new FileOutputStream(path+"/"+fileNam+".xls");307 wb.write(fos);308 // 指定パースに新excelファイルを生成309 fos.close();310 311 } catch (Exception e) {312 e.printStackTrace();313 System.out.println(e);314 }315 }
关于excel的导出
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。