话不多说 , : :
Excelutil.java
пакет pers.kangxu.datautils.utils; импорт java.io.file; импорт java.io.fileinputstream; import java.io.fileOutputStream; импорт java.io.ioexception; импорт java.io.InputStream; импорт java.Util.Arraylist; import.Ut. java.util.list; import java.util.map; import org.apache.poi.hssf.usermodel.hssfcellstyle; импорт org.apache.poi.hssf.usermodel.hssfont; импорт org.apache.poi.hssf.usermodel.hsssfont; import.apache.poi.hssf.usermodel.hsssfont; org.apache.poi.ss.usermodel.cell; import org.apache.poi.ss.usermodel.cellstyle; import org.apache.poi.ss.usermodel.cellvalue; import org.apache.poi.ss.usermodel.font; importvalue.poi.susmodel. org.apache.poi.ss.usermodel.row; import org.apache.poi.ss.usermodel.sheet; import org.apache.poi.ss.usermodel.workbook; import org.apache.poi.ss.util.cellrangeaddress;/** * * * * ExcelUtil { /** * 导出 excel * @param filePath 文件全路径 * @param sheetName sheet页名称 * @param sheetIndex 当前sheet下表 从0开始 * @param fileHeader 头部 * @param datas 内容 */ public static void writeExcel(String filePath,String sheetName, int sheetIndex, String[] fileHeader, List<String[]> datas){ // 创建工作簿 Workbook wb = new hssfworkbook (); // 创建工作表 Лист листа s = wb.createSheet (); wb.setsheetName (листовиндекс, листовой аномам); Ряд r = s.createrow (0); Ячейка C = NULL; Font font = null; CellStyle styleHeader = null; CellStyle styleContent = null; // 粗体 font = wb.createfont (); font.setboldweight (hssffont.boldweight_bold); // 设置头样式 styleHeader = wb.createCellStyle (); StyleHeader.SetFont (Font); 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 (hssfcellStyle.border_thin); i = 0; i <fileheader.length;) {c = r.createcell (i); C.SetCellStyle (StyleHeader); c.setcellvalue (fileheader [i]); i ++; } // 设置内容 for (int rownum = 0; rownum <datas.size ();) {// 行 row data.size () r = s.createrow (rownum+1); // 创建行 for (int cellnum = 0; cellnum <fileHeader.length;) {c = R.CreateCell (cellnum); c.setcellvalue (data.get (rownum) [cellnum]); C.SetCellStyle (StyleContent); cellnum ++; } rownum ++; } FileOutputStream OUT = null; try {// 创建文件或者文件夹, 将内容写进去 if (fileutil.createfile (new File (filePath))) {out = new FileOutputStream (filePath); wb.write (out); }} catch (Exception e) {e.printstackTrace (); } наконец {try {// 关闭流 if (out! = null) {out.flush (); out.close (); }} catch (ioException e) {e.printstacktrace (); }}} / ** * 读取 Excel 文件内容 * @param filePath * @param sheateindex * / public Static <ship <map <string, string >> readexcel (string filePath, int sheateIndex) {list <map, string >> maplist = new arraylist <map <string >> () (); // 头 List <string> list = new ArrayList <string> (); // int cnt = 0; int idx = 0; try {inputstream input = new FileInputStream (filePath); // 建立输入流 Workbook WB = NULL; WB = новый HSSFWorkBook (вход); // 获取 Лист 页 Лист = wb.getSheetat (листовиндекс); Итератор <row> rows = sheet.rowiterator (); while (row.hasnext ()) {row row = rows.next (); Итератор <cell> cells = row.celliterator (); Map <string, string> map = new hashmap <string, string> (); if (cnt == 0) {// 将头放进 Список 中 while (cells.hasnext ()) {cell cell = cells.next (); if (iscontainmergecell (лист)) {cancelmergecell (лист); } list.add (getStringCellValue (cell)); } cnt ++; продолжать; } else {while (cells.hasnext ()) {cell cell = cells.next (); if (iscontainmergecell (лист)) {cancelmergecell (лист); } // 区别相同的头 list = listutil.changeSameval (list); map.put (list.get (idx ++), getstringcellvalue (cell)); }} idx = 0; maplist.add (map); } return MapList; } catch (ioException ex) {ex.printstackTrace (); } return null; } / ** * 合并单元格 * @param лист 当前 лист 页 * @param firstrow 开始行 * @param lastrow 结束行 * @param firstcol 开始列 * @param lastcol 结束列 * / public static int mergecell (лист, int firstrow, int lastrow, int firstcol, int lastcol) {if (itled = null) {return -1; } return Sheet.AddmergedRegion (New CellRangeadDress (Firstrow, Lastrow, Firstcol, LastCol)); } / ** * 取消合并单元格 * @param лист * @param idx * / public static void cancelmergecell (лист) {int sheatemergecount = sheet.getNummergedregions (); for (int idx = 0; idx <sheatemergecount;) {cellrangaddress range = sheet.getmergedregion (idx); String val = getmergecellvalue (лист, range.getfirstrow (), range.getlastrow ()); // 取消合并单元格 sheet.removemergedregion (idx); for (int rownum = range.getfirstrow (); rownum <range.getLastrow ()+1;) {for (int cellnum = range.getFirstcolumn (); cellnum <range.getlastcolumn ()+1;) {heate.getrow (rounum) .getcell (cellnum) .sellvalue (valem); cellnum ++; } rownum ++; } idx ++; }} / ** * 判断指定单元格是否是合并单元格 * @param лист 当前 лист 页 * @param firstrow 开始行 * @param lastrow 结束行 * @param firstcol 开始列 * @param lastcol 结束列 * @return * / public static boolean ismergecell (лист, int row, column) {int sheetmecount = sheet.getnumergedred (); for (int i = 0; i <sheatemergecount;) {cellrangaddress range = sheet.getmergedregion (i); int firstcolumn = range.getFirstColumn (); int lastcolumn = range.getlastcolumn (); int firstrow = range.getfirstrow (); int lastrow = range.getLastrow (); if (row> = firstrow && row <= lastrow) {if (column> = firstcolumn && column <= lastcolumn) {return true; }} i ++; } вернуть false; } / ** * 判断 Лист 页中是否含有合并单元格 * @param sheet * @return * / public static boolean iscontainmergecell (лист листа) {if (лист == null) {return false; } return sheet.getnummergedregions ()> 0? Верно: Неверно; } / ** * 获取指定合并单元的值 * @param sheet * @param row * @param column * @return * / public static static getmergecellvalue (лист листа, int row, int column) {int sheatemergecount = sheet.getnumergedregions (); for (int i = 0; i <sheatemergecount;) {cellrangaddress range = sheet.getmergedregion (i); int firstcolumn = range.getFirstColumn (); int lastcolumn = range.getlastcolumn (); int firstrow = range.getfirstrow (); int lastrow = range.getLastrow (); if (row> = firstrow && row <= lastrow) {if (column> = firstcolumn && column <= lastcolumn) {row frow = sheet.getrow (firstrow); Cell fcell = frow.getCell (FirstColumn); return getStringCellValue (fcell); }} i ++; } return null; } / ** * 获取单元格的值 * @param cell * @return * / public static String 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 (). CreateFormulaUlaeValuator (); Evaluator.EvaluateFormulacell (Cell); CellValue CellValue = Evaluator.Evaluate (Cell); strcell = string.valueof (cellvalue.getNumberValue ()); перерыв; по умолчанию: strcell = ""; } return strcell; }}调用方式如下
Excelutiltester.java
пакет pers.kangxu.datautils.test; import java.util.arraylist; import java.util.list; import pers.kangxu.datautils.utils.excelutil; public class exceluteltestest {public static void main (string [] args) {list <string> dataS = new arrakelist <strics []> (]> (]> (];> (]> (]> (]> (]> (]; datas.add (new String [] {"狗熊", "母", "250"}); datas.add (new String [] {"猪粮", "不明", "251"}); //Excelutil.writeexcel("c://users//administrator//desktop//test//test//test.xls","sheet1",0, новая строка [] {"姓名", "年龄", "性别"}, даты); System.out.println (Excelutil.readexcel ("c: //users//administrator//desktop//test//test//test.xls", 0)); }}以上就是本文的全部内容 , 希望本文的内容对大家的学习或者工作能带来一定的帮助 同时也希望多多支持武林网!