gpt4 book ai didi

java - 如何使用 OpenCSV 读取长单元格值?

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:09 25 4
gpt4 key购买 nike

我正在导入 csv 文件。我在导入时有一个类似于 1.00E+13 的单元格值,必须将其读取为 10023000000000(实际扩展值)。我正在使用 OpenCSV。

注意:我通过对 XLS 和 XLSX 文件使用 apache POI 实现了这一点,由于 POI 不支持 CSV,所以我使用 OpenCSV。

POI 针对上述场景的解决方案是:

FormulaEvaluator objFormulaEvaluator = new HSSFFormulaEvaluator(hWorkbook);
HSSFCell cellValue = row.getCell(1); //input as 1.00E+13
objFormulaEvaluator.evaluate(cellValue); //result as 10023000000000

如何在 OpenCSV 中实现此目的?

提前致谢。

最佳答案

如果您自己解析 csvReader 中的字符串,肯尼的答案是完全正确的。我唯一担心的是 csv 文件是字符串,因此输入必须是 1.0023E+13 而不是 1.00E+13。

所有这些都表明 opencsv 中有另一种方法,那就是 CsvToBean 类。您创建一个类,其中包含您想要的公共(public) getter 和 setter 值,然后 CsvToBean 将为您处理转换,如下面的通过测试所示。

public class CsvToBeanDoubleTest {

private static final double DOUBLE_NUMBER = 10023000000000d;

private static final String TEST_STRING = "name,orderNumber,doubleNum\n" +
"kyle,abc123456,10023000000000\n" +
"jimmy,def098765,1.0023E+13 ";

private CSVReader createReader() {
return createReader(TEST_STRING);
}

private CSVReader createReader(String testString) {
StringReader reader = new StringReader(testString);
return new CSVReader(reader);
}

private MockBean createMockBean(String name, String orderNumber, double num) {
MockBean mockBean = new MockBean();
mockBean.setName(name);
mockBean.setOrderNumber(orderNumber);
mockBean.setDoubleNum(num);
return mockBean;
}

@Test
public void parseBeanWithNoAnnotations() {
HeaderColumnNameMappingStrategy<MockBean> strategy = new HeaderColumnNameMappingStrategy<MockBean>();
strategy.setType(MockBean.class);
CsvToBean<MockBean> bean = new CsvToBean<MockBean>();

List<MockBean> beanList = bean.parse(strategy, createReader());
assertEquals(2, beanList.size());
assertTrue(beanList.contains(createMockBean("kyle", "abc123456", DOUBLE_NUMBER)));
assertTrue(beanList.contains(createMockBean("jimmy", "def098765", DOUBLE_NUMBER)));
}
}

关于java - 如何使用 OpenCSV 读取长单元格值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33698181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com