话不多说 请看代码.
Excelutil.java
paquete pers.kangxu.datautils.utils; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.ioException; import java.io.inputstream; import java.util.arraylist; import java.util.hashmap; import; java.util.list; import java.util.map; import org.apache.poi.hssf.usermodel.hssfcellstyle; import org.apache.poi.hssf.usermodel.hssffont; import opache.poi.hssf.usermodel.hssfworkbook; importar; org.apache.poi.ss.usermodel.cell; importar org.apache.poi.ss.usermodel.cellstyle; importar org.apache.poi.ss.usermodel.cellvalue; importar org.apache.poi.ss.usermodel.font; import org.apache.ss.usermodel.formula.formula org.apache.poi.ss.usermodel.row; importar org.apache.poi.ss.usermodel.sheet; importar org.apache.poi.ss.usermodel.workbook; import org.apache.poi.ss.util.cellRanGeaddress;/** * * <b> * Excel 工具 * <b> * @autor kang * * */ * */@aathor kang *// * @aattor Kang *///@aTaT. *// * @aLATHOR Excelutil { / ** * 导出 Excel * @param filepath 文件全路径 * @param hoja de lámina 页名称 * @param sheetinx 当前 hoja 下表 从 0 开始 * @param fileheader 头部 * @param dataS 内容 * / public static void writeExcel (cadena filepath, stread sailame, int hojaindex, cadena [] fileHeader, list <string [string void writeeExcel (string filepath, string shitead, int hojaindex, cadena [] fileHeader, list <string [string void writeExcel (string filePath, string sampe, int hojaindex, cadena [] fileHeader, list <string [string void writeExcel (string filePath, string shiteame, int hojaindex. Libro de trabajo wb = nuevo HSSFWorkBook (); // 创建工作表 Hoja S = WB.CreateSheet (); wb.setSheetName (SheetIndex, SheetName); Fila r = s.createrow (0); Celda c = nulo; Fuente de fuente = nulo; CellStyle StyleHeader = NULL; CellStyle styLeContent = null; // 粗体 font = wb.createFont (); font.SetBoldWeight (hssffont.boldweight_bold); // 设置头样式 styleheader = wb.createCellStyle (); styleheader.setFont (fuente); styleheader.setBorderBottom (hssfcellstyle.border_thin); // 下边框 styleheader.setBorderleft (hssfcellstyle.border_thin); // 左边框 styleheader.setBorderTop (hssfcellstyle.border_thin); // 上边框 styleheader.setBorderRight (hssfcell.border_thin); // 右边框 // 设置内容样式 stylecontent = wb.creatyle (); 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 ();) {// 行 fila dataS.size () r = s.createrow (Rownum+1); // 创建行 para (int cellNum = 0; cellnum <fileHeader.length;) {c = R.CreateCell (CellNum); c.setCellValue (dataS.get (Rownum) [CellNum]); C.SetCellStyle (StyLeContent); CellNum ++; } Rownum ++; } FileOutputStream out = null; Pruebe {// 创建文件或者文件夹, 将内容写进去 if (fileUtil.CreateFile (nuevo archivo (filePath))) {out = new FileOutputStream (FilePath); wb.write (fuera); }} catch (Exception e) {E.PrintStackTrace (); } finalmente {try {// 关闭流 if (out! = null) {out.flush (); out.close (); }} catch (ioException e) {E.PrintStackTrace (); }}} / ** * 读取 Excel 文件内容 * @param filepath * @param sheetindex * / public static list <map <string, string >> readExcel (string filepath, int sheetEx) {list <map <string, string >> maplist = new ArrayList <map <string, string >> (); // 头 List <String> list = new ArrayList <String> (); // int cnt = 0; int idx = 0; intente {inputStream input = new FileInputStream (FilePath); // 建立输入流 Libro de trabajo wb = null; wb = nuevo HSSFWorkBook (entrada); // 获取 Hoja 页 Hoja = wb.getSheetat (sheetIndex); Iterador <gow> filas = shead.rowIterator (); while (shows.hasnext ()) {fila fila = shows.next (); Iterador <Cell> Cells = Row.CellIterator (); Map <string, string> map = new HashMap <String, String> (); if (cnt == 0) {// 将头放进 List 中 while (cells.hasnext ()) {cell cell = cells.next (); if (isContainMerGeCell (hoja)) {CancelMerGeCell (Hoja); } list.add (getStringCellValue (celda)); } cnt ++; continuar; } else {while (cells.hasnext ()) {celular = celulars.next (); if (isContainMerGeCell (hoja)) {CancelMerGeCell (Hoja); } // 区别相同的头 list = listUtil.ChangeSeVal (list); map.put (list.get (IDX ++), getStringCellValue (celda)); }} idx = 0; maplist.add (mapa); } return MapList; } catch (ioException ex) {ex.printstackTrace (); } return null; } / ** * 合并单元格 * @param Hoja 当前 Hoja 页 * @param Firstrow 开始行 * @param Lasstrow 结束行 * @param FirstCol 开始列 * @param LastCol 结束列 * / public static int PERGECELL (Hoja, int firstrow, int Lastrow, int FirstCol, int Lastcol) {if (hoja == null) {retorno -1; } hoja de retorno.addmergedRregion (nueva celularRanGeaddress (Firstrow, LASTROW, FirstCol, LastCol)); } / ** * 取消合并单元格 * @param hoja * @param idx * / public static void cancelMerGeCell (hoja) {int sheetMerGecount = sheet.getNummergedRegions (); for (int idx = 0; IDX <sheetMerGeCount;) {CellRanGeadDress Range = sheet.getMergedRegion (IDX); String val = getMerGeCellValue (sheet, range.getFirStrow (), range.getLasTROW ()); // 取消合并单元格 Sheet.RemoVemergedRregion (IDX); for (int Rownum = Range.getFirStrow (); Rownum <Range.getLastrow ()+1;) {for (int cellNum = Range.getFirstColumn (); CellNum <Range.getLastColumn ()+1;) {Sheet.getrow (Rownum) .getCell (CellNum). CellNum ++; } Rownum ++; } IDX ++; }} / ** * 判断指定单元格是否是合并单元格 * @param Hoja 当前 Hoja 页 * @param Firstrow 开始行 * @param Lastraw 结束行 * @param FirstCol 开始列 * @param LastCol 结束列 * @return * / public static boolean isMergeCell (hoja, int row, int columna) {intoveMergecount = shet.getNummergedRegedRegions (););;);;; for (int i = 0; i <sheetMerGecount;) {CellRanGeadDress range = sheet.getMergedRregion (i); int FirstColumn = Range.getFirstColumn (); int LastColumn = Range.getLastColumn (); int firstrow = range.getFirStrow (); int lastrow = range.getLastrow (); if (Row> = FirStrow && Row <= LASTROW) {if (columna> = FirstColumn && Column <= LastColumn) {return true; }} i ++; } return false; } / ** * 判断 Hoja 页中是否含有合并单元格 * @param hoja * @return * / public static boolean isContainMerGecell (Hoja) {if (sheet == null) {return false; } Hoja de retorno.getNummergedRegions ()> 0? verdadero: falso; } / ** * 获取指定合并单元的值 * @param hoja * @param fila * @param columna * @return * / public static string getMerGeCellValue (hoja de hoja, int row, int columna) {int sheetMerGeCount = sheet.getNummerGedRegions (); for (int i = 0; i <sheetMerGecount;) {CellRanGeadDress range = sheet.getMergedRregion (i); int FirstColumn = Range.getFirstColumn (); int LastColumn = Range.getLastColumn (); int firstrow = range.getFirStrow (); int lastrow = range.getLastrow (); if (fila> = firstrow && row <= lastraw) {if (columna> = firstColumn && column <= lastColumn) {row frow = sheet.getrow (firstrow); Celda fcell = frow.getcell (FirstColumn); return getTringCellValue (fcell); }} i ++; } return null; } / ** * 获取单元格的值 * @param celular * @return * / public static string getStringCellValue (celular) {string strcell = ""; if (cell == null) return strcell; Switch (Cell.getCellType ()) {Case Cell.Cell_Type_String: strcell = Cell.getRichStringCellValue (). GetString (). Trim (); romper; case cell.cell_type_numeric: strcell = string.ValueOf (Cell.getNumericCellValue ()); romper; Case Cell.Cell_Type_Boolean: strcell = string.ValueOf (Cell.getBooleCellValue ()); romper; Case Cell.Cell_Type_Formula: FormulaEvaluator Evaluator = Cell.getSheet (). GetWorkBook (). GetCreationHelper (). CreateFormulaEvaluator (); evaluator.evaluateFormulacell (célula); CellValue CellValue = Evaluator.Evaluate (Cell); strcell = string.ValueOf (CellValue.getNumberValue ()); romper; predeterminado: strcell = ""; } return strcell; }}调用方式如下
ExcelUtiLtester.java
paquete pers.kangxu.datautils.test; import java.util.arrayList; import java.util.list; import. Kangxu.dataUtil.utils.excelutil; public class Excelutiltester {public static void main (string [] args) {list <]> dataS = new arrayList <]> (); dataS.Add (nueva cadena [] {"狗熊", "母", "250"}); dataS.Add (nueva cadena [] {"猪粮", "不明", "251"}); //Excelutil.writeExcel("C://users//administrator//desktop//test//test//test.xls","sheet1",0, nueva cadena [] {"姓名", "年龄", "性别"}, datos); System.out.println (ExcelUtil.ReadExcel ("c: //users//administrator//desktop//test//test//test.xls", 0)); }}以上就是本文的全部内容 , 希望本文的内容对大家的学习或者工作能带来一定的帮助 同时也希望多多支持武林网! 同时也希望多多支持武林网!