首页 > 代码库 > 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导入数据