package test;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import java.io.FileInputStream;
import java.io.File;
import java.io.InputStream;
public class ReadeUserNumber{
/** Excel文件的存放位置。注意是正斜线*/
public static String fileToBeRead="F:/lihengxing/短信防火墙/用户号码/ccc(UP新势力用户)(广元4.21).xls";
public static void main(String argv[]){
try{
// 创建对Excel工作簿文件的引用
File file=new File(fileToBeRead);
InputStream myxls = new FileInputStream(file);
POIFSFileSystem poiFile=new POIFSFileSystem(myxls);
//poiFile.
HSSFWorkbook workbook = new HSSFWorkbook(poiFile);
System.out.println("****************************&&&&&&&&&&&&&&&&&&");
// 创建对工作表的引用。
// 本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
HSSFSheet sheet = workbook.getSheetAt(0);
// 也可用getSheetAt(int index)按索引引用,
// 在Excel文档中,第一张工作表的缺省索引是0,
// 其语句为:HSSFSheet sheet = workbook.getSheetAt(0);
// 读取左上端单元
int rowCount=sheet.getLastRowNum()+1;
HSSFRow row = sheet.getRow(0);
HSSFCell cell = row.getCell((short)0);
// 输出单元内容,cell.getStringCellValue()就是取所在单元的值
System.out.println("总共有"+rowCount+"条记录。");
System.out.println("左上端单元是: " + cell.getStringCellValue());
}catch(Exception e) {
System.out.println("已运行xlRead() : " + e );
System.out.println("****************************");
e.printStackTrace();
}
}
}
运行时抛出异常:
java.io.FileNotFoundException: no such entry: "Workbook"
at org.apache.poi.poifs.filesystem.DirectoryNode.getEntry(DirectoryNode.java:245)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.createDocumentInputStream(POIFSFileSystem.java:322)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:157)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:130)
at test.ReadeUserNumber.main(ReadeUserNumber.java:21)
求助!!!!!!!!!
在用POI读取EXCEL文件时
抛出java.io.FileNotFoundException: no such entry: "Workbook"
初步估计原因是因为EXCEL文件太大,将文件里的记录删到只剩几条记录的时候可编译通过。
请高手给个好的解决方案(急……)