码迷,mamicode.com
首页 > 其他好文 > 详细

HBase通过Excel导入数据

时间:2014-09-19 11:40:25      阅读:1503      评论:0      收藏:0      [点我收藏+]

标签: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;
    }
}

bubuko.com,布布扣

取出方式

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导入数据

标签:des   style   blog   http   color   io   os   java   ar   

原文地址:http://www.cnblogs.com/williamlyf/p/3980872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!