import java.io.bytearrayoutputstream;import java.io.ioexception;import java.io.outputstream; Import java.text.decimalformat;import java.text.simpledateformat;import java.util.date;import java.util.HashMap;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.hssfdateutil;import org.apache.poi.hssf.usermodel.hssfformulaevaluator; Import org.apache.poi.hssf.usermodel.hssfrow;import org.apache.poi.hssf.usermodel.hssfsheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.row;import org.apache.poi.ss.usermodel.sheet;import org.apache.poi.ss.usermodel.workbook;import org.apache.poi.xssf.usermodel.xssfworkbook;import org.springframework.web.multipart.multipartfile;public class exceldatautil { public string getfilename (Multipartfile file) &NBSP;{&Nbsp; return (String) file.getoriginalfilename (); } public string[][] getexceldata (MultipartFile file, int columnnumber) throws Exception { String[][] arr = null; Workbook wb = null; try { wb = new hssfworkbook (File.getinputstream ());//2003 } catch (exception e) { wb = new xssfworkbook (File.getinputstream ());//2007 } int sheetnum = wb.getnumberofsheets (); for (int i = 0; i < sheetnum; i++) { Sheet childSheet = Wb.getsheetat (i); int rownum = childsheet.getphysicalnumberofrows (); for (int j = 0; j < rownum; j++) { Row row = Childsheet.getrow (j); int cellNum = columnNumber + 1; if (j == 0) arr = new String[rowNum][cellNum]; for (int k = 0; k < cellnum; k++) { cell cell = row.getcell (k); arr[j][k] = parseexcel (cell); } } } return arr; } public Static string getsheetname (Multipartfile file) throws exception { workbook wb = null; try { wb = new hssfworkbook (File.getInputStream ());// 2003 } catch (exception e) { wb = new xssfworkbook ( File.getinputstream ());//2007 } return wb.getsheetname (0); } public hashmap<string, hashmap<string, String[][]>> getexcelmapdata ( multipartfile file, int columnnumber) throws Exception { hashmap<string, hashmap<string, string[][]>> maps = new HashMap<String, HashMap<String, String[][]>> (); hashmap<string, string[][]> mapda = new hashmap <String, String[][]> ( string filename =); file.getoriginalfilename (); string modelyear= ""; if (Filename.lastindexof ("_")!=-1) { &nbSp; modelyear = filename.substring ((Filename.lastindexof ("_")-4), ( Filename.lastindexof ("_"))); } String[][] arr = null; workbook wb = null; try { wb = new hssfworkbook ( File.getinputstream (), true);//2003 } catch ( Exception e) { wb = new xssfworkbook (File.getinputstream ());//2007 } &nbsP; int sheetnum = wb.getnumberofsheets (); for (int i = 0; i < sheetnum; i++) { sheet childsheet = wb.getsheetat (i); String ModelType = Wb.getsheetname (i); int rownum = childsheet.getphysicalnumberofrows (); for (int j = 0; j < rownum; j++) { Row row = Childsheet.getrow (j); if (row!=null) { &nbsP; int cellNum = columnNumber + 1; if (j == 0) arr = new String[rowNum][cellNum]; for (int k = 0; k < cellnum; k++) { Cell cell = row.getcell (k); &nbsP; arr[j][k] = parseexcel (cell); } } } mapda.put ( Modeltype, arr); } maps.put (MODELYEAR,&NBSP;MAPDA); return maps; } /** * DecimalFormat to avoid the E-annotation for big double */ private static decimalformat decimalformat = new decimalformat ("#.# ##### "); private string parseexcel (Cell cell) { if (cell == null) return ""; string result = new string (); switch (Cell.getCellType () ) { case HSSFCell.CELL_TYPE_NUMERIC:// number Types if ( hssfdateutil.iscelldateformatted (cell) {// process date format, time format SimpleDateFormat sdf = null; &Nbsp; sdf = new simpledateformat ("Yyyy-MM-dd HH:mm:ss"); date date = cell.getdatecellvalue (); result = sdf.format (date); } else { double va = cell.getnumericcellvalue (); if (va == (int) va )// remove the ". 0" after the numeric type result = string.valueof ((int) va); else// result = string.valueof (VA); if the double value is too big, it will be displayed in e-notation result = decimalformat.format (VA); } Break; case hssfcell.cell_type_ Formula: // cell.getcellformula (); try { &Nbsp; result = string.valueof (Cell.getNumericCellValue ()); } catch ( Illegalstateexception e) { result = string.valueof (Cell.getrichstringcellvalue ()); } break; case hssfcell.cell_type_string:// string type result = Cell.getrichstringcellvalue (). toString (); break; case HSSFCell.CELL_TYPE_BLANK: result = ""; default: result = ""; break; } return result; } public static void exportexcels (String fileName, String[][] excles, outputstream os) throws IOException { hssfworkbook wb = new hssfworkbook (); hssfsheet sheet = wb.createsheet ("New sheet"); int rows = 0; for ( String[] cells&nbsP;: excles) { hssfrow row = sheet.createrow (rows++); Int cols = 0; for (String cellvalue : cells) { hssfcell cell = row.createcell (cols++); cell.setcellvalue (CellValue); } } wb.write (OS); } Public static byte[] exportexcels (string[][] excles) throws IOException { &nBsp; hssfworkbook wb = new hssfworkbook (); bytearrayoutputstream os = new bytearrayoutputstream (); hssfsheet sheet = wb.createsheet ("New sheet"); int rows = 0; for (string[] cells : excles) { hssfrow row = sheet.createrow (rows++); int cols = 0; for (string cellvalue : cells) { HSSFCell cell = Row.createcell (cols++); cell.setcellvalue (CellValue); } } wb.write (OS); return os.tobytearray (); }}
Java Operations Excel Tool class sharing