bootstrap-fileinput模態框匯入Excel完整示例
阿新 • • 發佈:2019-01-26
import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; 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.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelUtil { private XSSFWorkbook wb = null; private XSSFSheet sheet = null; /** * @param wb * @param sheet */ public ExcelUtil(XSSFWorkbook wb, XSSFSheet sheet) { this.wb = wb; this.sheet = sheet; } /** * 合併單元格後給合併後的單元格加邊框 * * @param region * @param cs */ public void setRegionStyle(CellRangeAddress region, XSSFCellStyle cs) { int toprowNum = region.getFirstRow(); for (int i = toprowNum; i <= region.getLastRow(); i++) { XSSFRow row = sheet.getRow(i); for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) { XSSFCell cell = row.getCell(j);// XSSFCellUtil.getCell(row, // (short) j); cell.setCellStyle(cs); } } } /** * 設定表頭的單元格樣式 * * @return */ public XSSFCellStyle getHeadStyle() { // 建立單元格樣式 XSSFCellStyle cellStyle = wb.createCellStyle(); // 設定單元格的背景顏色為淡藍色 cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index); cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); // 設定單元格居中對齊 cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 設定單元格垂直居中對齊 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 建立單元格內容顯示不下時自動換行 cellStyle.setWrapText(true); // 設定單元格字型樣式 XSSFFont font = wb.createFont(); // 設定字型加粗 font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋體"); font.setFontHeight((short) 200); cellStyle.setFont(font); // 設定單元格邊框為細線條 cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN); return cellStyle; } /** * 設定表體的單元格樣式 * * @return */ public XSSFCellStyle getBodyStyle() { // 建立單元格樣式 XSSFCellStyle cellStyle = wb.createCellStyle(); // 設定單元格居中對齊 cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 設定單元格垂直居中對齊 cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER); // 建立單元格內容顯示不下時自動換行 cellStyle.setWrapText(true); // 設定單元格字型樣式 XSSFFont font = wb.createFont(); // 設定字型加粗 font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋體"); font.setFontHeight((short) 200); cellStyle.setFont(font); // 設定單元格邊框為細線條 cellStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderRight(XSSFCellStyle.BORDER_THIN); cellStyle.setBorderTop(XSSFCellStyle.BORDER_THIN); return cellStyle; } //匯入excel public static List<List<String>> readXlsx(String path) throws IOException { InputStream input = new FileInputStream(path); return readXlsx(input); } public static List<List<String>> readXls(String path) throws IOException { InputStream input = new FileInputStream(path); return readXls(input); } public static List<List<String>> readXlsx(InputStream input) throws IOException { List<List<String>> result = new ArrayList<List<String>>(); XSSFWorkbook workbook = new XSSFWorkbook(input); for (XSSFSheet xssfSheet : workbook) { if (xssfSheet == null) { continue; } for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow row = xssfSheet.getRow(rowNum); int minCellNum = row.getFirstCellNum(); int maxCellNum = row.getLastCellNum(); List<String> rowList = new ArrayList<String>(); for (int i = minCellNum; i < maxCellNum; i++) { XSSFCell cell = row.getCell(i); if (cell == null) { continue; } rowList.add(cell.toString()); } result.add(rowList); } } return result; } public static List<List<String>> readXls(InputStream input) throws IOException { List<List<String>> result = new ArrayList<List<String>>(); HSSFWorkbook workbook = new HSSFWorkbook(input); for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) { HSSFSheet sheet = workbook.getSheetAt(numSheet); if (sheet == null) { continue; } for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { HSSFRow row = sheet.getRow(rowNum); int minCellNum = row.getFirstCellNum(); int maxCellNum = row.getLastCellNum(); List<String> rowList = new ArrayList<String>(); for (int i = minCellNum; i < maxCellNum; i++) { HSSFCell cell = row.getCell(i); if (cell == null) { continue; } rowList.add(getStringVal(cell)); } result.add(rowList); } } return result; } private static String getStringVal(HSSFCell cell) { switch (cell.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: return cell.getBooleanCellValue() ? "TRUE" : "FALSE"; case Cell.CELL_TYPE_FORMULA: return cell.getCellFormula(); case Cell.CELL_TYPE_NUMERIC: cell.setCellType(Cell.CELL_TYPE_STRING); return cell.getStringCellValue(); case Cell.CELL_TYPE_STRING: return cell.getStringCellValue(); default: return null; } } }