日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jfinal poi

發布時間:2025/3/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jfinal poi 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

最近項目采用jfinal的項目要對一些excel進行操作,經過考慮采用jfinal+poi,在一些學習,使用后總結并分享一些代碼片段。

導入excel========================================

protected Workbook workbook =null;protected File file=null;public Object readExcel(UploadFile uploadFile) throws Exception{String path = uploadFile.getUploadPath() + "/" + System.currentTimeMillis() + uploadFile.getFileName();file = new File(path);uploadFile.getFile().renameTo(file);//文件是否存在this.fileCheck(path);//返回workbookworkbook=this.getWorkbook(path);if (validateData()){//解析excel讀取數據,并返回List<Record>List<Record> list = new ArrayList<>();String itemName =null;Date startTime = null;sheet = workbook.getSheetAt(0);int rows = sheet.getLastRowNum();//從0到最后一行非空rowfor (int i = 3; i <= rows; i++) {Row row = sheet.getRow(i);if (row != null) {int cells = row.getLastCellNum();//行中,從0到最后一個非空cellfor (int j = 0; j < cells; j++) {Cell cell = row.getCell(j);if (cell != null) {// 需驗證單元格里面的數據,""也會返回nullswitch (j) {case 0:cell.setCellType(Cell.CELL_TYPE_STRING);itemName= cell.getStringCellValue().trim();break;case 1:if(cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC && DateUtil.isCellDateFormatted(cell)){//日期也是數值類型startTime = cell.getDateCellValue();}else{throw new Exception("請輸入正確的日期!");}break;default:break;}}Record r = new Record();r.set("itemName", itemName);r.set("startTime", startTime);list.add(r);itemName=null;startTime=null;}workbook.close();file.delete();return list;}return null;};/*** 文件常規檢查* @param filePath* @throws FileNotFoundException* @throws FileFormatException*/protected void fileCheck(String filePath) throws FileNotFoundException, FileFormatException {File file = new File(filePath);if (!file.exists()) {throw new FileNotFoundException("傳入的文件不存在:" + filePath);}//03 ,07if (!(filePath.endsWith(".xls") || filePath.endsWith(".xlsx"))) {throw new FileFormatException("傳入的文件不是excel");}}/*** 03或07excel**/protected Workbook getWorkbook(String filePath) throws IOException {Workbook workbook = null;InputStream is = new FileInputStream(filePath);if (filePath.endsWith(".xls")) {workbook = new HSSFWorkbook(is);} else if (filePath.endsWith(".xlsx")) {workbook = new XSSFWorkbook(is);}return workbook;}

導出excel數據===========================================

protected HSSFWorkbook workbook = new HSSFWorkbook();protected HSSFSheet sheet=workbook.createSheet();;protected HSSFRow row;protected HSSFCell cell;protected HSSFCellStyle style ;protected HSSFFont font ;protected List<Record> list;protected String[] headersId;protected String[] headersName;protected String title;protected String fileName;//以流的形式直接輸出excel到客戶端,在controller調用此方法后再次調用 renderNull()此方法即可。 //網上有的是生成excel file 再用renderFile()的方法輸出到客戶端,但我沒有采用這種方法。(注意:這種應該在文件輸出后將文件刪除) public void writeExcel(List<Record> list,String title,String[] headersId,String[] headersName,String fileName,HttpServletResponse response) throws Exception{this.list=list;this.title=title;this.fileName=fileName;this.headersId=headersId;this.headersName=headersName;this.genTitle();this.genList();this.genFooter();OutputStream outputStream=response.getOutputStream();try {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(fileName, "utf-8")+".xls");workbook.write(outputStream);outputStream.flush();}catch (Exception e) {throw new Exception("導出失敗!");}finally {outputStream.close();workbook.close();}}//生成title及標題行public void genTitle(){row = sheet.createRow(0);//題頭sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, headersName.length-1));cell = row.createCell(0);cell.setCellStyle(genTitleStyle());cell.setCellValue(title);rowindex+=3;}//生成list數據public void genList(){//表格標題行row = sheet.createRow(rowindex);for(int i=0;i<headersName.length;i++){cell = row.createCell(i);cell.setCellStyle(genH2Style());cell.setCellValue(headersName[i]);}Record r=null;for(int i=0;i<list.size();i++){rowindex++;row = sheet.createRow(rowindex);r = list.get(i);//每行數據for(int j =0;j<headersId.length;j++){cell = row.createCell(j);if(r.get(headersId[j]) instanceof Date)cell.setCellValue(DateUtil.dateToStr((Date)r.get(headersId[j]), "yyyy-MM-dd"));else if(r.get(headersId[j]) instanceof String)cell.setCellValue((String)r.get(headersId[j])==null?"":(String)r.get(headersId[j]));else if(r.get(headersId[j]) instanceof Number)cell.setCellValue(r.get(headersId[j])==null?"":String.valueOf(r.get(headersId[j])));}}rowindex++;}

?

?

?

?

轉載于:https://my.oschina.net/WWWW23223/blog/725664

總結

以上是生活随笔為你收集整理的jfinal poi的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩成人久久 | 色噜噜狠狠一区二区三区牛牛影视 | 中出亚洲| 久久久久亚洲AV成人无在 | 在线成人中文字幕 | 国产国产国产 | 毛片一区二区三区 | 欧美 日韩 国产 一区 | 中文字幕一区二区三区电影 | 欧美视频一区二区三区四区 | 两女双腿交缠激烈磨豆腐 | 神马久久久久久久 | 六十路息与子猛烈交尾 | 亚洲精品久久久久中文字幕二区 | 干欧美少妇 | 让男按摩师摸好爽 | 国产精品不卡一区二区三区 | 伊人国产在线视频 | 91精品人妻一区二区 | 欧美高跟鞋交xxxxxhd | 国产成人一区二区三区视频 | 黄视频国产| 国产在线视频卡一卡二 | 亚洲欧美国产精品久久久久久久 | 伊人色av| 欧美激情videos | 日本成人在线不卡 | 亚洲男人天堂视频 | 欧美a v在线 | 麻豆 美女 丝袜 人妻 中文 | 澳门色网 | 色网网站 | 人人澡澡人人 | 波多野吉衣在线视频 | 中文字幕人妻互换av久久 | 日韩性大片| 九热视频在线观看 | 女人高潮娇喘1分47秒 | 亚洲成在人 | 国产乱码精品一区二区三 | 精品乱子一区二区三区 | 国产一区二区精品丝袜 | 亚洲精品国产手机 | 福利一区二区 | 国产精品无码在线 | 亚洲精品一区二区三区区别 | 国产精品久久久久久久久久久久 | 99久久久无码国产精品性黑人 | 欧美在线xxx| 国产精品xxxx | 国产一区导航 | 91麻豆精品一二三区在线 | 69视频一区 | 日韩www在线观看 | 日韩国产成人 | 欧美a级在线观看 | 荫道bbwbbb高潮潮喷 | 黄色国产精品 | 91xxx在线观看 | 国产日韩一区二区在线观看 | 午夜国产 | 91超碰在线播放 | 免费日批网站 | 久草成人在线 | 黄视频网站在线看 | 欧美日韩中文字幕一区 | 999久久久精品视频 亚洲视频精品在线 | 亚洲AV无码乱码国产精品牛牛 | av最新天堂 | 丰满熟妇人妻中文字幕 | 99国产超薄肉色丝袜交足 | 中国国产bdsm紧缚捆绑 | 精品三级在线 | 国产草草影院 | 男女考妣视频 | 国产一级黄色电影 | 欧美日韩免费做爰视频 | 草草影院最新地址 | 中国美女一级片 | 四虎4hu永久免费网站影院 | 高级家教课程在线观看 | 爆操白虎逼 | 操操操网站 | 自拍偷拍视频在线观看 | 深夜成人福利视频 | 成人网在线播放 | 日韩精品一区三区 | 久久亚洲精品石原莉奈 | 古装三级吃奶做爰 | 自拍偷拍三级 | 免费看黄色一级大片 | 久久国产经典视频 | 国产婷婷一区二区三区久久 | 亚洲香蕉网站 | 少妇高潮一区二区三区99刮毛 | 99精品免费在线观看 | av在线播放网址 | 国产精品视频免费在线观看 | 国产午夜免费视频 |