那么,如何使用Apache POI以双数组形式获取数据呢?
我的代码如下:
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 org.apache.poi.ss.usermodel.Cell;
public class XLRead {
public static void main(String args[]) throws Exception {
Scanner in = new Scanner(System.in);
String wb_name;
wb_name = in.next();
File excel = new File("/Users/Documents/Sample_data/" + wb_name);
FileInputStream fis = new FileInputStream(excel);
HSSFWorkbook wb = new HSSFWorkbook(fis);
HSSFSheet sh = wb.getSheet("sample");
int rowNum = sh.getLastRowNum() + 1;
//System.out.println(rowNum);
int colNum = sh.getRow(0).getLastCellNum();
//System.out.println(colNum);
String[][] X0 = new String[rowNum][colNum];
// Here i tried to define X0 as double[][]. But it doesn't work.
for (int i = 3; i < 368; i++){
HSSFRow row = sh.getRow(i);
//System.out.println(row);
for (int j = 4; j <= 27; j++){
HSSFCell cell = row.getCell(j);
//System.out.println(cell);
String value = cellToString(cell);
X0[i][j] = value;
//System.out.println(value);
}
}
}
public static String cellToString(HSSFCell cell){
// i tried changing this function to public static double cellToDouble(HSSFCell cell)
int type;
Object result = null;
type = cell.getCellType();
if(cell!=null){
if (type == Cell.CELL_TYPE_FORMULA)
{
switch (cell.getCachedFormulaResultType()){
case Cell.CELL_TYPE_NUMERIC:
result = cell.getNumericCellValue();
break;
case Cell.CELL_TYPE_STRING:
result = cell.getStringCellValue();
break;
default:
throw new RuntimeException("Data type not applicable");
}
}
}
}
您应该使用getNumericCellValue()
直接返回的双值,而不需要以一种非常奇怪的方式将其转换为String,并尝试将其转换回来,即。
public static double getCellValue(HSSFCell cell){
switch (cell.getCachedFormulaResultType()){
case Cell.CELL_TYPE_NUMERIC:
return cell.getNumericCellValue();
break;
case Cell.CELL_TYPE_STRING:
return Double.parse(cell.getStringCellValue());
break;
default:
throw new RuntimeException("Data type not applicable");
}
}
然后将结果值放入double[]
中。
顺便说一句,我还会检查为什么您仍试图读取字符串格式的值。如果将所有值存储为Excel表中的数值,则仅使用CELL_TYPE_NUMERIC-case就足够了。
问题内容: 我正在使用POI HSSF读取excel数据,并且正在使用JUnit根据数据库proc RefCursor检查数据。 将来自Refcursor的数字数据(例如100)与excel工作表100中的数据进行比较时,Junit测试失败,但由于POI将其读取为100.0,因此Junit测试失败。 这是我正在构建的通用框架程序,因此该框架应该足够智能以忽略“ .0”。关于如何解决这个问题的任何投
问题内容: 我正在从文件中读取行,然后使用它们。每行仅由浮点数组成。 我整理了几乎所有内容,将这些行转换为数组。 我基本上是这样做的(pseudopython代码) 这行得通,但是似乎有点违反直觉和反pythonic,我想知道是否有更好的方法来处理来自文件的输入,以使最后有一个充满浮点数的数组。 问题答案: 快速回答: 如果您经常处理此类数据,csv模块将有所帮助。 如果您感到疯狂,甚至可以使用完
本文向大家介绍python读取与处理netcdf数据方式,包括了python读取与处理netcdf数据方式的使用技巧和注意事项,需要的朋友参考一下 netcdf是气候数据中的主流格式,当涉及到大范围的全球数万个格网点数据时,使用python脚本可以较快地读取与处理。 举例子 以上这篇python读取与处理netcdf数据方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐
本文向大家介绍php读取csv数据保存到数组的方法,包括了php读取csv数据保存到数组的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php读取csv数据保存到数组的方法。分享给大家供大家参考。具体分析如下: csv是常用的excel格式的替代品,很多时候我们导出数据是都会导成csv格式的,这样和excel没什么区别,下面的程序是要读取csv数据保存到数组我们要对数据进行操作,所以
我有一个Json数组文件的格式:-[[{key1:value1},{key2:value2},{key3:value3}],[{key1:value4},{key2:value5},{key3:value6}]] 我需要使用AWS glue爬取上述文件,并读取json模式,其中每个键都作为模式中的一列。我尝试使用标准的json分类器,但它似乎不起作用,并且模式加载为数组。我需要从S3读取json文
问题内容: 我想使用apachi poi从某个xlsx文件读取数据(单元格值)。下面的代码成功创建了实例,并分配了db.xlsx(我的虚拟xlsx)。我尝试过更改工作表编号,并使用该方法进行了仔细检查,以确保正确分配了工作簿。 接下来,我想为实例分配一个特定的工作表(带有name的索引),但是当前它返回。(我已经尝试过和方法)。 我究竟做错了什么? 编辑: 我尝试过方法,并取得了积极的成果。因此,