标签:des style blog http color io os java ar
package Common; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.*; /** * * @author LFF * @version 0.5 Excel文件操作帮助类 * */ public class ExcelPOIHelper { // D盘建一个空的workbook.xls文件 public static void Create(String path, String name) { Workbook wb = new HSSFWorkbook(); FileOutputStream fileOut; try { fileOut = new FileOutputStream("D:/workbook.xls"); wb.write(fileOut); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 取出Excel所有工作簿名 * * @param fullPath * Excel文件完整地址("D:/workbook.xls") * @return 工作簿名列表 */ public static List<String> GetSheets(String fullPath) { List<String> result = new ArrayList<String>(); try { FileInputStream file = new FileInputStream(fullPath); POIFSFileSystem ts = new POIFSFileSystem(file); Workbook workbook = new HSSFWorkbook(ts); for (int i = 0; i < workbook.getNumberOfSheets(); i++) { String sheetName = workbook.getSheetName(i); result.add(i, sheetName); } file.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } /** * 取工作簿中所有的行 * * @param fullPath * Excel文件完整地址("D:/workbook.xls") * @param sheetName * 工作簿名 * @return 键值对:<RowKey,<ColumnName, Value>> */ public static Map<String, List<Map<String, String>>> GetRows( String fullPath, String sheetName) { Map<String, List<Map<String, String>>> resultRow = new HashMap<String, List<Map<String, String>>>(); List<Map<String, String>> resultCells; Map<String, String> resultCell; try { FileInputStream file = new FileInputStream(fullPath); POIFSFileSystem ts = new POIFSFileSystem(file); Workbook workbook = new HSSFWorkbook(ts); Sheet sheet = workbook.getSheet(sheetName); int rowCounts = sheet.getPhysicalNumberOfRows();// 行数 int columnCounts = sheet.getRow(0).getPhysicalNumberOfCells(); // 列数 for (int i = 1; i < rowCounts; i++) { Row row = sheet.getRow(i);// 循环取第一行之后的每一行 row.getCell(0).setCellType(Cell.CELL_TYPE_STRING); resultCells = new ArrayList<Map<String, String>>(); resultCell = new HashMap<String, String>(); String rowKey = row.getCell(0).toString(); for (int j = 1; j < columnCounts; j++) { Cell cell = row.getCell(j);// 循环取第一列之后的每一列 if (null != cell) { cell.setCellType(Cell.CELL_TYPE_STRING); String columnName = sheet.getRow(0).getCell(j) .toString(); String cellValue = cell.toString(); resultCell.put(columnName, cellValue); } } resultCells.add(resultCell); resultRow.put(rowKey, resultCells); } file.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return resultRow; } }
取出方式
public static void main(String[] agrs) { String fullPath = "C:/Users/LFF/Desktop/HBase导入模版.xls"; // temp = ExcelPOIHelper.GetSheets(fullPath); // 取所有工作簿表名 String sheetName = "User-Info"; String tbName = sheetName.split("-")[0]; String tbCF = sheetName.split("-")[1]; Map<String, List<Map<String, String>>> rows = new HashMap<String, List<Map<String, String>>>(); rows = ExcelPOIHelper.GetRows(fullPath, sheetName); Iterator rowIterator = rows.entrySet().iterator(); while (rowIterator.hasNext()) { Entry rowEntry = (Entry) rowIterator.next(); Object rowKey = rowEntry.getKey(); Object cellsValue = rowEntry.getValue(); // System.out.println(rowKey); // System.out.println(cellsValue); List<Map<String, String>> cells = new ArrayList<Map<String, String>>(); cells = (List<Map<String, String>>) cellsValue; Iterator<Map<String, String>> it = cells.iterator(); while (it.hasNext()) { Object cellObject = it.next(); Map<String, String> cell = new HashMap<String, String>(); cell = (HashMap<String, String>) cellObject; Iterator cellIterator = cell.entrySet().iterator(); while (cellIterator.hasNext()) { Entry cellEntry = (Entry) cellIterator.next(); Object cellColumn = cellEntry.getKey(); Object value = cellEntry.getValue(); String strCellColumn = cellColumn.toString(); String columnName = strCellColumn.split("<")[0]; String valueType = strCellColumn.substring( strCellColumn.indexOf("<") + 1, strCellColumn.lastIndexOf(">")); System.out .println(String .format("存储在表[%s]的列族[%s]中行键为[%s]的[%s]列中的值为[%s](类型为[%s])", tbName, tbCF, rowKey, columnName, value, valueType)); Add(tbName, tbCF, rowKey.toString(), columnName, value.toString()); } } }
需要加入poi-3.10.1-20140818.jar包,下载在http://poi.apache.org/download.html。
标签:des style blog http color io os java ar
原文地址:http://www.cnblogs.com/williamlyf/p/3980872.html