场景:我正在尝试使用JExcel读取excel文件并将数据转储到Oracle数据库中。我要求用户浏览并选择一个文件从他们的系统中读取,然后读取相同的数据并将数据(不保存物理文件)转储到Oracle数据库中。FileNotFound读取excel文件时出现异常
<form id='uploadform'>
<table class='detailTable'>
<tr>
<td class='detailTableTD'>Select File to Upload:</td>
<td class='detailTableTD'>
<input type='file' id='fileUpload'>
</td>
</tr>
<tr>
<td class='detailTableTD'></td>
<td class='detailTableTD'>
<button id='uploadBtn' onclick="upload();">Upload</button>
<button id='backBtn'>Back</button>
</td>
</tr>
</table>
</form>
爪哇:
public int[][] readFromExcel(final String excelFilePath) throws ApplicationException {
String excelPath = excelFilePath.trim();
File inputWorkbook = new File(excelPath);
Workbook workbook;
MyObj drawBk;
List drBkLst = new ArrayList();
String tmpStr = "";
try {
workbook = Workbook.getWorkbook(inputWorkbook);
Sheet sheet = workbook.getSheet(0);
for (int j = 1; j < sheet.getRows(); j++) {
drawBk = new MyObj();
for (int i = 0; i < sheet.getColumns(); i++) {
Cell cell = sheet.getCell(i, j);
switch (i) {
case 0:
drawBk.setSerialNumber(cell.getContents());
break;
case 1:
drawBk.setMediaNumber(cell.getContents());
break;
case 2:
tmpStr = cell.getContents();
if (!(tmpStr.trim().equalsIgnoreCase("Y") || tmpStr.trim().equalsIgnoreCase("N")))
continue;
else
drawBk.setMnProcessInd(tmpStr);
drawBk.setSnProcessInd(tmpStr);
break;
}
}
drawBk.setLastChangedUser(userId);
drBkLst.add(drawBk);
}
} catch (Exception readExcelEx) {}
return insertExcelDataToDatabase(drBkLst);
}
在这里,我捕捉路径和作为参数传递到Java方法用于处理细胞和创建对象的ArrayList的将被插入到DB。这里所有简单的代码。 从本地部署运行时,它都可以正常工作,但是当我将EAR部署到服务器时,当我浏览文件并选择文件时,我开始获取FileNotFound异常。 我觉得这一切都是由于一些相对/绝对路径问题,但无法调试,我需要它很快。任何确切的帮助帮助将不胜感激?
谢谢。
请添加您使用的Java代码。 – 2012-10-31 10:45:01
添加处理表单的代码以及如何在服务器端获取文件会很有用。 – jddsantaella
@Tichodroma添加了阅读excel的Java代码。谢谢。 – axiomtheorem