java 读取 excel 问题,在线等,急。

caofaping 2010-02-28 03:18:31

private static void read() {
try {
String source = "e:/12.xls";
InputStream is = new FileInputStream(source);
Workbook rwb = Workbook.getWorkbook(is);
// 获得总 Sheets
Sheet[] sheets = rwb.getSheets();

for (int i = 0; i < sheets.length; i++) {
for (int j = 0; j < sheets[i].getColumns(); j++) {
//获取指定单元格的对象引用,需要注重的是它的两个参数,第一个是列数,第二个是行数
Cell cell = sheets[i].getCell(j, i);
System.out.print("Values : " + cell.getContents().trim());
}
System.out.println();
}

} catch (Exception e) {
e.printStackTrace();
}
}



问题是:Sheet[] sheets = rwb.getSheets(); 这句获取不到所有行数,每次都长度都是1.

指点下, 或者你有写好的给我也行。
...全文
199 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanghua4109 2010-03-01
  • 打赏
  • 举报
回复
在网上下一个开源的poi包.
String excelfile = Util.null2String(req.getParameter("excelfile"));
ExcelFile ef = null;
ExcelSheet sheetvalues = null;
ExcelRow rowvalues = null;
HSSFWorkbook wb = null;
HSSFSheet sheets = null;
HSSFRow rows = null;
HSSFCell cells = null;
HSSFCellStyle cellStyle = null;
if(excelfile.equals(""))
ef = (ExcelFile)req.getSession(true).getAttribute("ExcelFile");
else
ef = (ExcelFile)req.getSession(true).getAttribute(excelfile);
if(ef == null)
return;
wb = new HSSFWorkbook();
initStyle(ef, wb);
int sheetindex = 0;
while(ef.next())
{
String sheetname = ef.getSheetname();
sheetvalues = ef.getSheet();
if(sheetvalues != null)
{
sheets = wb.createSheet();
wb.setSheetName(sheetindex, Util.fromScreen(sheetname), (short)1);
sheetindex++;
for(int i = 0; i < sheetvalues.size(); i++)
{
rowvalues = sheetvalues.getExcelRow(i);
if(rowvalues != null)
{
short rowheight = rowvalues.getHight();
rows = sheets.createRow((short)i);
if(rowheight != 255)
rows.setHeightInPoints(rowheight);
int rowcellindex = 0;
boolean hasstyle = false;
boolean hasspan = false;
if(rowvalues.stylesize() == rowvalues.size())
hasstyle = true;
if(rowvalues.spansize() == rowvalues.size())
hasspan = true;
for(int j = 0; j < rowvalues.size(); j++)
{
cells = rows.createCell((short)rowcellindex);
String cellvalues = Util.null2String(rowvalues.getValue(j));
String cellvalueh = cellvalues.substring(0, 2);
String cellvaluev = cellvalues.substring(2);
if(cellvalueh.indexOf("s_") == 0)
{
cells.setEncoding((short)1);
cells.setCellValue(Util.fromHtmlToEdit(cellvaluev));
} else
if(cellvalueh.indexOf("i_") == 0)
{
int tempvalue = Util.getIntValue(cellvaluev);
if(tempvalue != 0)
cells.setCellValue(tempvalue);
} else
if(cellvalueh.indexOf("f_") == 0)
{
float tempvalue = Util.getFloatValue(cellvaluev);
if((double)tempvalue != 0.0D)
cells.setCellValue(tempvalue);
} else
if(cellvalueh.indexOf("d_") == 0)
{
double tempvalue = Util.getDoubleValue(cellvaluev);
if(tempvalue != 0.0D)
cells.setCellValue(tempvalue);
} else
if(cellvalueh.indexOf("o_") == 0)
cells.setCellFormula(cellvaluev);
else
if(cellvalueh.indexOf("n_") == 0)
if(Util.getDoubleValue(cellvaluev, -9999.9899999999998D) == -9999.9899999999998D)
{
cells.setEncoding((short)1);
cells.setCellValue(Util.fromHtmlToEdit(cellvaluev));
} else
{
double tempvalue = Util.getDoubleValue(cellvaluev);
if(tempvalue != 0.0D)
cells.setCellValue(tempvalue);
}
if(hasstyle)
{
String stylename = Util.null2String(rowvalues.getStyle(j));
if(!stylename.equals(""))
{
cellStyle = getStyle(stylename);
if(cellStyle != null)
cells.setCellStyle(cellStyle);
}
}
if(hasspan)
{
int rowspan = rowvalues.getSpan(j);
if(rowspan > 1)
{
for(int k = 0; k < rowspan - 1; k++)
{
rowcellindex++;
cells = rows.createCell((short)rowcellindex);
cells.setCellValue("");
if(hasstyle && cellStyle != null)
cells.setCellStyle(cellStyle);
}

sheets.addMergedRegion(new Region(i, (short)((rowcellindex + 1) - rowspan), i, (short)rowcellindex));
}
}
rowcellindex++;
}

}
}

for(int i = 0; i < sheetvalues.columnsize(); i++)
sheets.setColumnWidth((short)i, sheetvalues.getColumnwidth(i));

}
}
String filename = ef.getFilename();
res.setHeader("content-disposition", "attachment; filename=" + filename);
ServletOutputStream out = res.getOutputStream();
res.setContentType("application/octet-stream");
wb.write(out);
out.flush();
out.close();
Z_FEI 2010-03-01
  • 打赏
  • 举报
回复
引用 3 楼 ldj299 的回复:
sheet是工作表啊!
rwb.getSheets();
是获得这个Excel文件中有多少个工作表啊!
楼主是想获取一个表中的所有行,Sheet rs = rwb.getSheet(0);  rs.getRow();就是获得所有的行!

支持,google下,有很多例子!
zliuzz 2010-03-01
  • 打赏
  • 举报
回复
Sheet[] sheets = rwb.getSheets()
这个的确是获得所有工作表
sheets[0]是第一张 再getRow 才是所有行
xierangh 2010-03-01
  • 打赏
  • 举报
回复
引用 6 楼 zm851203 的回复:
引用 5 楼 phoenix_99 的回复:引用 3 楼 ldj299 的回复: sheet是工作表啊! rwb.getSheets(); 是获得这个Excel文件中有多少个工作表啊!楼主是想获取一个表中的所有行,Sheet rs = rwb.getSheet(0);  rs.getRow();就是获得所有的行! 同意3楼
同意!

继续同意
jypapgl 2010-03-01
  • 打赏
  • 举报
回复
zm_hs 2010-03-01
  • 打赏
  • 举报
回复
引用 5 楼 phoenix_99 的回复:
引用 3 楼 ldj299 的回复:
sheet是工作表啊!
rwb.getSheets();
是获得这个Excel文件中有多少个工作表啊!
楼主是想获取一个表中的所有行,Sheet rs = rwb.getSheet(0);  rs.getRow();就是获得所有的行!
同意3楼

同意!
Phoenix_99 2010-03-01
  • 打赏
  • 举报
回复
引用 3 楼 ldj299 的回复:
sheet是工作表啊!
rwb.getSheets();
是获得这个Excel文件中有多少个工作表啊!
楼主是想获取一个表中的所有行,Sheet rs = rwb.getSheet(0);  rs.getRow();就是获得所有的行!

同意3楼
downmoon 2010-03-01
  • 打赏
  • 举报
回复
参看官方文档
http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/jxl/Workbook.html
ldj299 2010-03-01
  • 打赏
  • 举报
回复
sheet是工作表啊!
rwb.getSheets();
是获得这个Excel文件中有多少个工作表啊!
楼主是想获取一个表中的所有行,Sheet rs = rwb.getSheet(0); rs.getRow();就是获得所有的行!
  • 打赏
  • 举报
回复
这句是读你的excel文件有几个sheet。。。查api

62,619

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧