从excel表中读取随机单元格值

时间:2014-12-29 12:32:34

标签: java excel

我已将=RANDBETWEEN(10, 20)存储在我的Excel工作表中,此公式在Excel工作表中生成10到20之间的随机值。我需要在我的java程序中读取这5个随机值。

虽然函数在excel表中给出了不同的值,但我的java程序读取相同的常量随机值5次..我怎样才能读取5个不同的随机值?

这就是我所做的:

public class JavaApplication1 {
    public static void main(String[] args) {
        try {
            for (int i = 0; i < 5; i++) {
                FileInputStream fileInputStream =
                    new FileInputStream("C://users/user/Desktop/C.xls");
                HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream);
                HSSFSheet worksheet = workbook.getSheet("POI Worksheet");
                HSSFRow row1 = worksheet.getRow(0);
                HSSFCell cellA1 = row1.getCell((short) 0);
                double a1Val = cellE1.getNumericCellValue();
                System.out.println("A1: " + a1Val);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我得到的输出是:

A1: 12.0
A1: 12.0
A1: 12.0
A1: 12.0
A1: 12.0

如何让我的程序读取五个不同的值?

2 个答案:

答案 0 :(得分:1)

您使用i五次查询同一个单元格(A1)。在Excel中打开/刷新工作表时计算此值。为什么你认为快速连续查询同一个单元格会导致每次都有不同的东西?

我不确定为什么你依赖Excel来获取随机数。您是否有理由直接在Java中生成这些内容?例如:

// Assuming 20 is your max, 10 your min
Random random = new Random();
int yourRandomNumber = random.nextInt((20 - 10) + 1) + 10;

答案 1 :(得分:0)

你总是得到 0 行,但是行

5次
HSSFRow row1 = worksheet.getRow(0);  

0更改为i

for (int i=0;i<5;i++)
{
   // ...
   HSSFRow row1 = worksheet.getRow(i); 
   // ...
}

您将获得 0- 1-nd ... 第4行