使用Java / Apache POI读取Excel并计算总和

桑迪普·查特吉(Sandeep Chatterjee)

设想:

我正在开发一个将打开excel文件,迭代工作表的行并计算每行数值总计的应用程序。

问题:

考虑以下两种情况:

在此处输入图片说明

在此处输入图片说明

如果第一种情况的输出是:

A -> 15.0 pages.
B -> 15.0 pages.
T -> 15.0 pages.

为什么在第二种情况下的输出是:

Tanmay -> 15.0 pages.
Abhishek -> 15.0 pages.
Bijoy -> 15.0 pages.

不应该如下吗?

Abhishek -> 15.0 pages.
Bijoy -> 15.0 pages.
Tanmay -> 15.0 pages.

代码:

package miscellaneous;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;


/**
 * Created by Sandeep on 8/6/15.
 */
public class TestHarness {

    @SuppressWarnings({ "unchecked" })
    public static void main(String[] args) {
        Map<String, Double> stringDoubleMap = new HashMap<String, Double>();
        stringDoubleMap = readExcelFile();

        for (Map.Entry<String, Double> entry : stringDoubleMap.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue() + " pages.");
        }
    }

    @SuppressWarnings("rawtypes")
    private static Map readExcelFile() {

        InputStream fileInputStream = null;
        HSSFWorkbook hssfWorkbook = null;
        HSSFSheet sheet;
        HSSFRow row;
        HSSFCell cell;
        Iterator rowIterator, cellIterator;
        String employeeName=null;
        String sheetName=null;
        double total=0;
        Map<String, Double> empMonthlyProdStat = new HashMap<String, Double>();

       try {
           fileInputStream = new FileInputStream("D:\\Sandeep\\TestExcelWorkbook.xls");
           hssfWorkbook = new HSSFWorkbook(fileInputStream);
           sheet = hssfWorkbook.getSheetAt(0);
           sheetName = sheet.getSheetName();
           rowIterator = sheet.rowIterator();

           while (rowIterator.hasNext()) {
               row = (HSSFRow) rowIterator.next();
               cellIterator = row.cellIterator();
               while (cellIterator.hasNext()) {
                   cell = (HSSFCell) cellIterator.next();

                   if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
                       employeeName = cell.getStringCellValue();
                   } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
                       total = total + cell.getNumericCellValue();
                   } else {// Handle Boolean, Formula, Errors
                   }
               }
               empMonthlyProdStat.put(employeeName, total);
               total = 0;
           }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                hssfWorkbook.close();
                fileInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println(sheetName + "\n" + "------------");
        return empMonthlyProdStat;
    }

}
根特·艾哈迈迪(Gent Ahmeti)

由于HashMap不会按其插入顺序返回条目,因此该顺序已关闭。尝试改用LinkedHashMap

从文档中:

Map接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与HashMap的不同之处在于,它维护一个贯穿其所有条目的双向链接列表。此链表定义了迭代顺序,通常是将键插入映射的顺序(插入顺序)。请注意,如果将密钥重新插入到映射中,则插入顺序不会受到影响。(如果在调用之前m.containsKey(k)将立即返回true的情况下调用了m.put(k,v),则将密钥k重新插入到映射m中。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从 Apache poi java 读取 Excel

来自分类Dev

无法使用Apache POI从Excel文件读取

来自分类Dev

使用Java中的Apache POI读取上标Excel文本

来自分类Dev

使用Apache POI从Excel读取下拉列表内容

来自分类Dev

使用Apache POI从Excel读取下拉列表内容

来自分类Dev

使用Apache POI API从Excel文件中读取值

来自分类Dev

使用Apache POI从Excel读取单元格

来自分类Dev

尝试使用POI Apache库读取Excel文件

来自分类Dev

如何使用 Apache POI 读取 MS excel 文件?

来自分类Dev

如何使用Apache POI读取和搜索excel数据

来自分类Dev

使用Apache POI以Java导出到Excel

来自分类Dev

使用Java Apache POI 3.9 Eclipse从Excel文件.xlsx中读取

来自分类Dev

使用Apache POI在Java中读取/写入Excel文件时出现问题

来自分类Dev

Java Apache Poi 编写 Excel

来自分类Dev

使用Java Apache POI从只读xlsm文件读取数据

来自分类Dev

如何使用Apache POI读取特定行?

来自分类Dev

使用Apache POI读取.docx文件

来自分类Dev

如何使用Java Apache POI在Excel中添加标题列?

来自分类Dev

Spring教程示例-使用Java配置导出Apache excel POI

来自分类Dev

使用Apache.POI读写Excel的Java内存问题

来自分类Dev

如何插入MS表格Excel中使用的Apache POI的Java

来自分类Dev

如何使用Apache Poi在Java中将PDF转换为Excel

来自分类Dev

无法使用Java和Apache POI写入Excel文件

来自分类Dev

使用POI Apache从Excel读取数据时将数据添加到ArrayList

来自分类Dev

无论系统日期格式如何,都使用 apache poi 从 excel 中以格式读取日期

来自分类Dev

NumberFormatException:对于输入字符串:尝试使用 apache poi 读取 excel 文件时的“null”

来自分类Dev

使用Apache POI在Excel中删除多行

来自分类Dev

使用 Apache POI 获取 Excel 填充颜色

来自分类Dev

硒 + Apache POI + Java

Related 相关文章

  1. 1

    从 Apache poi java 读取 Excel

  2. 2

    无法使用Apache POI从Excel文件读取

  3. 3

    使用Java中的Apache POI读取上标Excel文本

  4. 4

    使用Apache POI从Excel读取下拉列表内容

  5. 5

    使用Apache POI从Excel读取下拉列表内容

  6. 6

    使用Apache POI API从Excel文件中读取值

  7. 7

    使用Apache POI从Excel读取单元格

  8. 8

    尝试使用POI Apache库读取Excel文件

  9. 9

    如何使用 Apache POI 读取 MS excel 文件?

  10. 10

    如何使用Apache POI读取和搜索excel数据

  11. 11

    使用Apache POI以Java导出到Excel

  12. 12

    使用Java Apache POI 3.9 Eclipse从Excel文件.xlsx中读取

  13. 13

    使用Apache POI在Java中读取/写入Excel文件时出现问题

  14. 14

    Java Apache Poi 编写 Excel

  15. 15

    使用Java Apache POI从只读xlsm文件读取数据

  16. 16

    如何使用Apache POI读取特定行?

  17. 17

    使用Apache POI读取.docx文件

  18. 18

    如何使用Java Apache POI在Excel中添加标题列?

  19. 19

    Spring教程示例-使用Java配置导出Apache excel POI

  20. 20

    使用Apache.POI读写Excel的Java内存问题

  21. 21

    如何插入MS表格Excel中使用的Apache POI的Java

  22. 22

    如何使用Apache Poi在Java中将PDF转换为Excel

  23. 23

    无法使用Java和Apache POI写入Excel文件

  24. 24

    使用POI Apache从Excel读取数据时将数据添加到ArrayList

  25. 25

    无论系统日期格式如何,都使用 apache poi 从 excel 中以格式读取日期

  26. 26

    NumberFormatException:对于输入字符串:尝试使用 apache poi 读取 excel 文件时的“null”

  27. 27

    使用Apache POI在Excel中删除多行

  28. 28

    使用 Apache POI 获取 Excel 填充颜色

  29. 29

    硒 + Apache POI + Java

热门标签

归档