java poi读取xls数据是出错

InputStream inp;
inp = new FileInputStream("D:/2.xlsx");
Workbook wb = WorkbookFactory.create(inp); --到这报错
Sheet sheets = wb.getSheetAt(0);
错误提示(Could not initialize class org.apache.poi.POIXMLDocument)

第1个回答  推荐于2016-04-18
public class test {
public static void main(String[] args) throws IOException, SQLException {
try{
File f = new File("c:\\sid列表.xls");
InputStream input = new FileInputStream(f);
POIFSFileSystem fs = new POIFSFileSystem(input);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
int rowNum = sheet.getLastRowNum();
FileWriter fileWriter=new FileWriter("c:\\Result.txt");
String sql;
int sid=1;
for(int i=0;i<=rowNum;i++){
HSSFCell cell1=sheet.getRow(i).getCell(0);
HSSFCell cell2=sheet.getRow(i).getCell(1);
HSSFCell cell3=sheet.getRow(i).getCell(2);

sql="INSERT INTO T_RESOURCE ( SITE_CODE,RESOURCE_CODE,RESOURCE_TYPE,POPULARIZE_TYPE_ID,POPULARIZE_UNIT_ID,POPULARIZE_CHANNEL_ID,MEMO,CREATED_TIME,LASTMODIFIED_TIME,CREATOR,MENDER) VALUES('tonglu'," +
sid+",'SEM','1','14','152','" +cell1+" "+cell2+" "+cell3 +"',now(),now(),'admin','admin')\n";
fileWriter.write(sql);
sid++;
}
fileWriter.flush();
fileWriter.close();
}catch (Exception e) {
e.printStackTrace();
}

}
}
代码太少了 没看出来 这是我一般读xls的写法追问

这是报的错 The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)我差了下这个只能读取2003的
有读取2007的吗

追答

我的程序?? 我用是office2010的 是不是你的包不对

追问

这个POI是我前几天从官网上下的,我现在用的是office2007和wps,把你的包发到我邮箱上吧
[email protected]

追答

已发

本回答被提问者采纳
第2个回答  2013-04-03
读取xlsx 你可以使用HSSFWorkbook
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(inp);
相似回答