我正在基于CSV文件创建Excel文件。为了读取CSV文件,我使用Opencsv API和Apache POI。在我的csv中包含65537行。是否有限制使用opencsv API或Apache Poi Api?
class Test {
public static void main(String[] args) throws IOException {
Workbook wb = new HSSFWorkbook();
CreationHelper helper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");
CSVReader reader = new CSVReader(new FileReader("SampleData.csv"));
String[] line;
int r = 0;int count=0;
while ((line = reader.readNext()) != null) {
Row row = sheet.createRow((short) r++);
count=count+1;
System.out.println("count-"+count);
for (int i = 0; i < line.length; i++)
row.createCell(i)
.setCellValue(helper.createRichTextString(line[i]));
}
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
}}
当我运行这个程序,它给我以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid row number (-32768) outside allowable range (0..65535)at org.apache.poi.hssf.usermodel.HSSFRow.setRowNum(HSSFRow.java:232)
at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:86)
at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:70)
at org.apache.poi.hssf.usermodel.HSSFSheet.createRow(HSSFSheet.java:205)
at org.apache.poi.hssf.usermodel.HSSFSheet.createRow(HSSFSheet.java:71)
at com.arosys.utilityclasses.Test.main(Test.java:23)Java Result: 1
我试图跟踪多少行支持我发现它仅支持32768,也试过少的行数,它很好地工作并创建excel文件。
请帮我解决这个问题,如果我的csv包含65536行,那么我如何编写excel文件(Xls)。
感谢
Thanks.i对于u有更多的问题,如果行数增加65536它能够写入文件(XLS),在XLXS的另一端,我可以使用此API写入多少行。 –
嗯,我不确定。你只需要尝试一下并看看。就excel版本而言,我认为早期版本的excel(2007年之前)仅限于65536行。然而,新版本有很大的限制。 1,048,576就是我可以在这里看到的http://www.contextures.com/xlfaqapp.html#MoreRows。因此测试输出文件以查看excel的版本是否可以处理它 – aldrin
如果你想使用超过65536行,你将需要切换到.xlsx格式,这意味着从HSSF更改为XSSF – Gagravarr