话不多说, 请看代码:
Excelutil.java
persion pers.kangxu.datautils.utils; นำเข้า java.io.file; นำเข้า java.io.fileinputstream; นำเข้า java.io.fileoutputstream นำเข้า Java.io.ioexception; นำเข้า Java.io.inputstream; java.util.list; นำเข้า java.util.map; นำเข้า org.apache.poi.hssf.usermodel.hssfcellstyle; นำเข้า org.apache.poi.hssf.usermodel.hssffont; org.apache.poi.ss.usermodel.cell; นำเข้า org.apache.poi.ss.usermodel.cellstyle; นำเข้า org.apache.poi.ss.usermodel.cellvalue; นำเข้า org.apache.poi.ss.usermodel.font; org.apache.poi.ss.usermodel.row; นำเข้า org.apache.poi.ss.usermodel.sheet; นำเข้า org.apache.poi.ss.usermodel.workbook; นำเข้า org.apache.po.ss.util.cellrangeaddress; excelutil { / ** * 导出 excel * @param filepath 文件全路径 * @param แผ่นชีทชื่อ页名称 * @param sheetindex 当前แผ่น下表从 0 开始 * @param fileheader 头部 * @param datas 内容 * / public String DATAS) {// 创建工作簿 Workbook WB = HSSFWORKBOOK ใหม่ (); // 创建工作表แผ่นชีต s = wb.createsheet (); wb.setSheetName (SheetIndex, SheetName); แถว r = s.createrow (0); เซลล์ c = null; ตัวอักษรตัวอักษร = null; CellStyle styleheader = null; CellStyle StyleContent = NULL; // 粗体 font = wb.createfont (); font.setboldweight (hssffont.boldweight_bold); // 设置头样式 styleheader = wb.createCellstyle (); Styleheader.setFont (แบบอักษร); styleheader.setBorderBottom (hssfcellstyle.border_thin); // 下边框 Styleheader.setBorderLeft (hssfcellstyle.border_thin); // 左边框 Styleheader.setBorderTop (hssfcellstyle.border_thin); // 上边框 styleheader.setBorderright (hssfcellstyle.border_thin); WB.CreateCellStyle (); StyleContent.setBorderBottom (hssfcellstyle.border_thin); // 下边框 StyleContent.setBorderLeft (hssfcellstyle.border_thin); // 左边框 stylecontent.setBorderTop (hssfcellstyle.border_thin); // 上边框 stylecontent.setborderright i = 0; i <fileheader.length;) {c = r.createCell (i); C.SetCellStyle (Styleheader); C.SetCellValue (FileHeader [i]); i ++; } // 设置内容สำหรับ (int rownum = 0; rownum <datas.size ();) {// 行แถว datas.size () r = s.createrow (rownum+1); // 创建行สำหรับ (int cellnum = 0; cellnum <fileheader.length;) {c = r.createCell (cellnum); C.SetCellValue (data.get (rownum) [cellnum]); C.SetCellStyle (StyleContent); Cellnum ++; } Rownum ++; } fileOutputStream out = null; ลอง {// 创建文件或者文件夹, 将内容写进去 if (fileutil.createFile (ไฟล์ใหม่ (filePath))) {out = ใหม่ fileOutputStream (filePath); wb.write (ออก); }} catch (exception e) {e.printstacktrace (); } ในที่สุด {ลอง {// 关闭流ถ้า (ออก! = null) {out.flush (); out.close (); }} catch (ioexception e) {e.printstacktrace (); }}} / ** * 读取 excel 文件内容 * @param filepath * @param sheetindex * / รายการคงที่สาธารณะ <แผนที่ <สตริง, สตริง >> readexcel (สตริง filepath, int sheetindex) {รายการ <แผนที่ <สตริง, สตริง >> maplist = new ArrayList <แผนที่ <String, String >> // 头 list <String> list = new ArrayList <String> (); // int cnt = 0; int idx = 0; ลอง {inputStream input = new fileInputStream (filePath); // 建立输入流เวิร์กบุ๊ก wb = null; WB = HSSFWORKBOOK ใหม่ (อินพุต); // 获取แผ่นชีท页แผ่นงาน = wb.getSheetat (SheetIndex); ตัววนซ้ำ <row> rows = sheet.rowiterator (); ในขณะที่ (rows.hasnext ()) {row row = rows.next (); Iterator <sell> cells = row.celliterator (); แผนที่ <สตริงสตริง> แผนที่ = ใหม่ hashmap <สตริงสตริง> (); if (cnt == 0) {// 将头放进รายการ中ในขณะที่ (cells.hasnext ()) {เซลล์เซลล์ = cells.next (); ถ้า (iScontainmergecell (แผ่น)) {cancelmergecell (แผ่น); } list.add (getStringCellValue (เซลล์)); } CNT ++; ดำเนินการต่อ; } else {ในขณะที่ (cells.hasnext ()) {เซลล์เซลล์ = cells.next (); ถ้า (iScontainmergecell (แผ่น)) {cancelmergecell (แผ่น); } // 区别相同的头 list = listutil.changesameval (รายการ); map.put (list.get (idx ++), getStringCellValue (เซลล์)); }} idx = 0; maplist.add (แผนที่); } return maplist; } catch (ioexception ex) {ex.printstacktrace (); } return null; } / ** * 合并单元格 * @param ชีต当前แผ่น页 * @param firstrow 开始行 * @param lastrow 结束行 * @param firstcol 开始列 * @param lastcol 结束列 * / สาธารณะคงที่ mergecell (แผ่นชีท) } return sheet.addmergedRegion (ใหม่ cellrangeaddress (firstrow, lastrow, firstcol, lastcol)); } / ** * 取消合并单元格 * @param sheet * @param idx * / โมฆะคงที่สาธารณะ cancelmergecell (แผ่นชีท) {int sheetmergecount = sheet.getNummergedRegions (); สำหรับ (int idx = 0; idx <sheetmergecount;) {cellrangeaddress range = sheet.getMergedRegion (idx); String val = getMerGecellValue (แผ่น, range.getFirstrow (), range.getLastrow ()); // 取消合并单元格 sheet.removemergedRegion (idx); สำหรับ (int rownum = range.getFirstrow (); rownum <range.getLastrow ()+1;) {สำหรับ (int cellnum = range.getFirstColumn (); Cellnum <range.getLastColumn ()+1;) {sheet.getRow (Rownum) Cellnum ++; } Rownum ++; } idx ++; }} / ** * 判断指定单元格是否是合并单元格 * @param ชีต当前แผ่น页 * @param firstrow 开始行 * @param lastrow 结束行 * @param firstcol 开始列 * @param lastcol 结束列 * @return * / public sheet n) (แผ่นชีท สำหรับ (int i = 0; i <sheetmergecount;) {cellrangeaddress range = sheet.getMergedRegion (i); int firstColumn = range.getFirstColumn (); int lastColumn = range.getLastColumn (); int firstrow = range.getFirTrow (); int lastrow = range.getLastrow (); if (row> = firstrow && row <= lastrow) {if (คอลัมน์> = firstColumn && คอลัมน์ <= lastColumn) {return true; }} i ++; } return false; } / ** * 判断แผ่น页中是否含有合并单元格 * @param ชีต * @return * / บูลีนคงที่สาธารณะ iScontainmergecell (แผ่นชีท) {ถ้า (แผ่น == null) {return false; } return sheet.getNummergedRegions ()> 0? จริง: เท็จ; } / ** * 获取指定合并单元的值 * @param sheet * @param row * @param คอลัมน์ * @return * / สตริงคงที่สาธารณะ getMergecellValue (แผ่นชีท, แถว int, คอลัมน์ int) {int sheetMergecount = sheet.getNummerGedGions (); สำหรับ (int i = 0; i <sheetmergecount;) {cellrangeaddress range = sheet.getMergedRegion (i); int firstColumn = range.getFirstColumn (); int lastColumn = range.getLastColumn (); int firstrow = range.getFirTrow (); int lastrow = range.getLastrow (); if (row> = firstrow && row <= lastrow) {ถ้า (คอลัมน์> = firstColumn && คอลัมน์ <= lastColumn) {row frow = sheet.getRow (firstrow); เซลล์ fcell = frow.getCell (FirstColumn); Return GetStringCellValue (fcell); }} i ++; } return null; } / ** * 获取单元格的值 * @param cell * @return * / สตริงคงที่สาธารณะ getStringCellValue (เซลล์เซลล์) {string strcell = ""; if (cell == null) return strcell; Switch (cell.getCellType ()) {case cell.cell_type_string: strcell = cell.getRichStringCellValue (). getString (). trim (); หยุดพัก; case cell.cell_type_numeric: strcell = string.valueof (cell.getNumericCellValue ()); หยุดพัก; case cell.cell_type_boolean: strcell = string.valueof (cell.getBooleanCellValue ()); หยุดพัก; case cell.cell_type_formula: formulaevaluator evaluator = cell.getSheet (). getWorkbook (). getCreationHelper (). createFormulaEvaluator (); Evaluator.evaluateFormulacell (เซลล์); cellvalue cellvalue = evaluator.evaluate (เซลล์); strcell = string.valueof (cellValue.getNumberValue ()); หยุดพัก; ค่าเริ่มต้น: strcell = ""; } return strcell; -调用方式如下
Excelutiltester.java
แพ็คเกจ pers.kangxu.datautils.test; นำเข้า java.util.arraylist; นำเข้า java.util.list; การนำเข้า pers.kangxu.datautils.utils.excelutil; ชั้นเรียนสาธารณะ Excelutiltester dataS.add (สตริงใหม่ [] {"狗熊", "母", "250"}); dataS.add (สตริงใหม่ [] {"猪粮", "不明", "251"}); //excelutil.writeExcel("c://users//administrator//desktop//test//test//test.xls","Sheet1",0 สตริงใหม่ [] {"姓名", "年龄", "性别"}, Datas); System.out.println (excelutil.readexcel ("c: //users//administrator//desktop//test//test//test.xls", 0)); -以上就是本文的全部内容, 希望本文的内容对大家的学习或者工作能带来一定的帮助, 同时也希望多多支持武林网!