场景:我正在尝试使用 JExcel 读取 excel 文件并将数据转储到 Oracle 数据库中。我要求用户浏览并选择要从他们的系统中读取的文件,然后我读取该文件并将数据(不保存物理文件)转储到 Oracle 数据库中。
<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 方法,并创建要插入 DB 的对象的 ArrayList。这里所有的简单代码。从本地部署运行时一切正常,但是当我将 EAR 部署到服务器时,当我浏览文件并选择文件时,我开始收到 FileNotFound 异常。我觉得这一切都是由于一些相对/绝对路径问题,但不可能调试,我需要它快。任何精确的帮助将不胜感激?
谢谢。