从Excel表单中读取一个随机的单元格值

我在我的Excel表中存储了=RANDBETWEEN(10, 20) ,这个公式在10到20之间的excel表中生成随机值。我需要在我的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 

我怎样才能让我的程序读取五个不同的值?

您使用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; 

你总是得到第0行,但是5行

 HSSFRow row1 = worksheet.getRow(0); 

0更改为i

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

你会得到第0,第 1 …第4