您的位置:首页 > 其它

jxl读取指定文件下的所有Excel文件,但是是.xls文件,查的是jxl不支持excel2007

2014-04-02 22:20 344 查看
/**
* 读取某个文件夹下的所有文件
*
* @throws BiffException
*/
public boolean readfile(String filepath) throws FileNotFoundException  {
StringBuffer fileName = new StringBuffer();
File file = new File(filepath);
if (!file.isDirectory()) {
System.out.println("文件");
System.out.println("path=" + file.getPath());
System.out.println("absolutepath=" + file.getAbsolutePath());
System.out.println("name=" + file.getName());

} else if (file.isDirectory()) {
System.out.println("文件夹");
String[] filelist = file.list();
SmartMenuElement menuElement = null;

List<BdUnit> units = commonComponentsService.query("from BdUnit where id=65 ");
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\\" + filelist[i]);
if (!readfile.isDirectory()) {
// 读取到相应的文件
menuElement = new SmartMenuElement();
// 读取excel中的值
// 通过Workbook的静态方法getWorkbook选取Excel文件
Workbook workbook = null;
try {

workbook = Workbook.getWorkbook(new File(readfile.getPath()));

// 通过Workbook的getSheet方法选择第一个工作簿(从0开始)
Sheet sheet = workbook.getSheet(0);
int row = sheet.getRows();
// sheet.getColumns(); 固定规格
// int col = 13;
// 行
List<SmartMenu> bd = null;
boolean tf = true;
String msg = "";
double late = 1.0;// 换算率
// p判断文件名称(商品编码)
bd = commonComponentsService
.query("from SmartMenu where no='" + readfile.getName().substring(0, readfile.getName().indexOf(".")) + "'");
if (bd != null && bd.size() > 0) {
menuElement.setHeader(bd.get(0));
// 用于标识读取到第一个元素,一共43个元素
int count = 1;
List<BdUnit> unit = null;
for (int r = 6; r < row; r++) {
if (count == 1) {
// 列是从C列开始,行是从6行到15行开始判断
if (sheet.getCell(2, r).getContents() != null && sheet.getCell(2, r).getContents().length() > 0) {
if ("营养素摄入量分析".equals(sheet.getCell(2, r).getContents().trim())) {
// 将行向下移三行则读取第一个元素值,同时向后移动1列则读取单位,再向后移动1列则读取数量
r = r + 3;
// 元素名称
if (sheet.getCell(2, r).getContents() != null && sheet.getCell(2, r).getContents().length() > 0) {
System.out.println(sheet.getCell(2, r).getContents());
menuElement.setOperationElements(sheet.getCell(2, r).getContents().trim());
} else {
fileName.append(readfile.getName() + ":元素名称不存在 ;");
break;
}
// 单位
if (sheet.getCell(8, r).getContents() != null && sheet.getCell(8, r).getContents().length() > 0) {
System.out.println(sheet.getCell(8, r).getContents());
unit = commonComponentsService.query("from BdUnit where name='" + sheet.getCell(8, r).getContents().trim()
+ "'");
if (unit != null && unit.size() > 0) {
menuElement.setUnit(unit.get(0));
} else if("胆固醇".equals(sheet.getCell(2, r).getContents().trim())){
menuElement.setUnit(units.get(0));
}
} else {
fileName.append(readfile.getName() + ":单位不存在 ;");
break;
}
// 数量
if(sheet.getCell(11, r).getContents() != null && sheet.getCell(11, r).getContents().length() > 0){
System.out.println("文件"+readfile.getName()+":"+sheet.getCell(11, r).getContents());
menuElement.setValue(Double.parseDouble(sheet.getCell(11, r).getContents().trim()));
}
if (sheet.getCell(12, r).getContents() != null && sheet.getCell(12, r).getContents().length() > 0) {
System.out.println("文件"+readfile.getName()+":"+sheet.getCell(12, r).getContents());
menuElement.setValue(Double.parseDouble(sheet.getCell(12, r).getContents().trim()));
} else {
fileName.append(readfile.getName() + ":摄入量不存在 ;");
break;
}
count++;
commonComponentsService.save(menuElement);
}
}
} else {
// 元素名称
if (sheet.getCell(2, r).getContents() != null && sheet.getCell(2, r).getContents().length() > 0) {
System.out.println(sheet.getCell(2, r).getContents());
menuElement.setOperationElements(sheet.getCell(2, r).getContents().trim());
} else {
fileName.append(readfile.getName() + ":元素名称不存在 ;");
break;
}
// 单位
if (sheet.getCell(8, r).getContents() != null && sheet.getCell(8, r).getContents().length() > 0) {
System.out.println(sheet.getCell(8, r).getContents());
unit = commonComponentsService.query("from BdUnit where name='" + sheet.getCell(8, r).getContents().trim() + "'");
if (unit != null && unit.size() > 0) {
menuElement.setUnit(unit.get(0));
} else if("胆固醇".equals(sheet.getCell(2, r).getContents().trim())){
menuElement.setUnit(units.get(0));
}
} else {
fileName.append(readfile.getName() + ":单位不存在 ;");
break;
}
// 数量
if(sheet.getCell(11, r).getContents() != null && sheet.getCell(11, r).getContents().length() > 0){
System.out.println("文件"+readfile.getName()+":"+sheet.getCell(11, r).getContents());
menuElement.setValue(Double.parseDouble(sheet.getCell(11, r).getContents().trim()));
}else if (sheet.getCell(12, r).getContents() != null && sheet.getCell(12, r).getContents().length() > 0) {
System.out.println("文件"+readfile.getName()+":"+sheet.getCell(12, r).getContents());
menuElement.setValue(Double.parseDouble(sheet.getCell(12, r).getContents().trim()));
} else {
fileName.append(readfile.getName() + ":摄入量不存在 ;");
break;
}
count++;
commonComponentsService.save(menuElement);
}
}
} else {
fileName.append(readfile.getName() + ":文件找不到对应的商品 ;");
continue;
}
workbook.close();

} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (readfile.isDirectory()) {
readfile(filepath + "\\" + filelist[i]);
}
}
System.out.println(fileName);

}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jxl
相关文章推荐