首页 > 代码库 > HBase通过Excel导入数据
HBase通过Excel导入数据
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。
HBase通过Excel导入数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。