美文网首页
讀取導入內容

讀取導入內容

作者: 蚁丶点 | 来源:发表于2019-03-06 19:51 被阅读0次
public static Map<String,Object> readExcel(String filePath) throws InvalidFormatException, IOException{
    File file = new File(filePath);
    FileInputStream inStream = new FileInputStream(file);
    Workbook workbook = WorkbookFactory.create(inStream);
    Sheet sheet = workbook.getSheetAt(0);
    Row row = sheet.getRow(0);
    Map<String,Object> excel = new HashMap<String,Object>();
    Map<Integer, String[]> content = null;
    if(row==null){
        content = new HashMap();
    }else{
        String[] title = readTitle(workbook);
        excel.put("title", title);
        content = readContent(workbook);
    }
    excel.put("content", content);
    if(file.exists()){
        file.delete();
    }
    return excel;
}
private static String[] readTitle(Workbook workbook){
    
    Sheet sheet = workbook.getSheetAt(0);
    Row row = sheet.getRow(0);
     //得到总列数
    int colNum = row.getPhysicalNumberOfCells();
    
    String[] title = new String[colNum];
    for (int i = 0; i < colNum; i++) {
        title[i] = getCellFormatValue(row.getCell((short) i));
    }
    return title;
}

/**
 * @創建目的:读取Excel数据内容
 * @param filePath
 * @returnMap 包含单元格数据内容的Map对象
 * @throws InvalidFormatException
 * @throws IOException
 * @創建人 H2408236
 * @創建時間 2017年6月17日 下午2:12:57
 * @修改人 
 * @修改時間
 */
private static Map<Integer, String[]> readContent(Workbook workbook){
    Map<Integer, String[]> content = new HashMap<Integer, String[]>();
    Sheet sheet = workbook.getSheetAt(0);
    Row row = sheet.getRow(0);
    //得到总列数
    int colNum = row.getPhysicalNumberOfCells();
    // 得到总行数
    int rowNum = sheet.getLastRowNum();
    // 正文内容应该从第二行开始,第一行为表头的标题
    for (int i = 1; i <= rowNum; i++) {
        row = sheet.getRow(i);
        String[] colValues = new String[colNum];
        for(int j = 0; j< colNum; j ++){
            colValues[j] = getCellFormatValue(row.getCell((short) j)).trim();
        }
        content.put(i, colValues);
    }
    return content;
}


private static String getCellFormatValue(Cell cell){
    String cellvalue = "";
    
    if (cell != null) {
        // 判断当前Cell的Type
        switch (cell.getCellType()) {
        // 如果当前Cell的Type为NUMERIC
        case Cell.CELL_TYPE_NUMERIC:
        case Cell.CELL_TYPE_FORMULA: {
            // 判断当前的cell是否为Date
            if (DateUtil.isCellDateFormatted(cell)) {
                // 如果是Date类型则,转化为Data格式
                Date date = cell.getDateCellValue();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                cellvalue = sdf.format(date);
            } else {
                // 如果是纯数字,取得当前Cell的数值
                cellvalue = String.valueOf(cell.getNumericCellValue());
            }
            break;
        }
        // 如果当前Cell的Type为String
        case Cell.CELL_TYPE_STRING:
            // 取得当前的Cell字符串
            cellvalue = cell.getRichStringCellValue().getString();
            break;
        // 默认的Cell值
        default:
            cellvalue = " ";
        }
    }
    return cellvalue;
}

相关文章

  • 讀取導入內容

  • mysql數據庫導入數據

    SQL文檔導入 在terminal內導入 在MySQL內導入 mysql>use DATABASE_NAME; m...

  • 证书链设计

    加密 加密(英语:Encryption)是将明文信息改變為難以讀取的密文內容,使之不可读的过程。 不可逆加密算法 ...

  • 190226 如何閱讀一本書 02

    閱讀分為認真讀和消遣讀,無人指導讀和有人指導讀。消遣的讀與有人指導的讀多數時候只能得到資訊,想要提高理解力還得認真...

  • 大江西派丹法蟄龍睡功探要

    by 盛克琦 [導讀]道教內丹流派眾多,大略可以分為南、北、中、東、西五大流派。西派,是道教內丹諸流派中的一個重要...

  • 文章再好,沒了好標題,也很難被關注!

    標題的好壞,直接決定了讀者的閱讀與否。在資訊爆炸的時代,再好的內容都必須努力爭取閱聽人的注意力,因此學習寫出吸睛標...

  • 0326晨讀感悟文章

    0326晨讀感悟 1.參與 在我美國就讀高中的時候,我見識到參與能培養到對個人的自信和容入當中環境內.當時老師積極...

  • 勞累

    昨晚看書到了深夜,蔣勛的《孤獨六講》。文字很淺顯,內容有點深奧。讀得有點快,仿佛略過了挺多的內容,大學的日子有點碌...

  • 我讀《鬥賊》

    這是一本新書,今年五月出版,這本書引起我的興趣是因別逗老師快讀完時在讀書群裏發了書中的一段內容,想必是內容觸動了別...

  • 畢設.藝術都市指南特刊設計及衍生產品應用.視覺傳達設計專業

    異性裝幀形式,在量足夠多的情況下可以進行裝置藝術展示。 特刊內頁的立體導航 特刊內頁的立體導航 特刊內頁的立體導航...

网友评论

      本文标题:讀取導入內容

      本文链接:https://www.haomeiwen.com/subject/qoqjzftx.html