POIExcel导入

如果EXCEL文件中存在公式运算值,请按照以下步骤解析:


if (HSSFCell.CELL_TYPE_FORMULA ==cell.getCellType()) {

FormulaEvaluatorevaluator = cell.getSheet().getWorkbook().

getCreationHelper().createFormulaEvaluator();

   evaluator.evaluateFormulaCell(cell);

   CellValue cellValue = evaluator.evaluate(cell);

}


选择上传文件的jsp页面

<table width="95%">

   <tr style="width: 100%">

         <td width="15%">

                   <bean:messagebundle="fs-budget" key="fs_budget_import_titile"/>

         </td>

         <tdwidth="85%" colspan="3">

             <input name="file"type="file" style="width:90%;height:25"class="upload"> <br/>

             <input type="hidden"name="service" value="${param.service}">

             <img src="style/common/images/loading.gif" border="0"

                  id="loadingImg"align="bottom" style="display: none"/>

         </td>

   </tr>

</table>



form关键代码:

public class FsBudgetImportForm  {

         protectedString fdFilename = null;

         protectedFormFile file = null;

         protectedString service = null;

         publicString getFdFilename() {

                   returnfdFilename;

         }

         publicvoid setFdFilename(String fdFilename) {

                   this.fdFilename= fdFilename;

         }

       

         publicFormFile getFile() {

                   returnfile;

         }

         publicvoid setFile(FormFile file) {

                   this.file= file;

         }

         publicString getService() {

                   returnservice;

         }

 

         publicvoid setService(String service) {

                   this.service= service;

         }

}


action关键代码:

public ActionForwardsaveImport(ActionMapping mapping, ActionForm form,

                            HttpServletRequestrequest, HttpServletResponse response)

                            throwsException {

                   TimeCounter.logCurrentTime("Action-saveImport",true, getClass());

                   KmssMessagesmessages = new KmssMessages();

                   try{

                            if(!request.getMethod().equals("POST"))

                                     thrownew UnexpectedRequestException();

                            Stringservice = request.getParameter("service");

                            FsBudgetImportFormimportForm = (FsBudgetImportForm) form;

                            List<FsBudgetImportMessage>messageList = ((IFsBudgetImportService) SpringBeanUtil

                                               .getBean(service)).saveImport(importForm);

request.setAttribute("messageList",messageList);

                   }catch (Exception e) {

                            messages.addError(e);

                   }

 

                   TimeCounter.logCurrentTime("Action-save",false, getClass());

                   if(messages.hasError()) {

                            KmssReturnPage.getInstance(request).addMessages(messages).save(

                                               request);

                            returngetActionForward("failure", mapping, form, request, response);

                   }else {

                            KmssReturnPage.getInstance(request).addMessages(messages)

                                               .addButton(KmssReturnPage.BUTTON_CLOSE).save(request);

                            returngetActionForward("result", mapping, form, request, response);

                   }

         }

service关键代码

public List<FsBudgetImportMessage>saveImport(FsBudgetImportForm importForm)

                            throwsException {

                   List<FsBudgetImportMessage>messages = new ArrayList<FsBudgetImportMessage>();

                   FormFilefile = importForm.getFile();

                   if(file.getFileSize() == 0) {

                            FsBudgetImportMessagemessage = new FsBudgetImportMessage();

                            message.addFailMsg(ResourceUtil.getString(

                                               "fs.budget.import.error.empty","fs-budget"));

                            messages.add(message);

                   }else {

                            POIFSFileSystemfs = new POIFSFileSystem(file.getInputStream());

                            HSSFWorkbookwb = new HSSFWorkbook(fs);

                            HSSFSheetsheet = wb.getSheetAt(0);

                            //取到工作表里面的数据

                            List<FsBudgetCommon>dataList = getDataList(sheet);

                            introwNum = 1;

                            for(FsBudgetCommon fsBudgetCommon : dataList) {

                                     rowNum++;

                                     //保存并添加信息

                                     messages.add(save(fsBudgetCommon,rowNum));

                            }

                   }

                   returnmessages;

         }

private List<FsBudgetCommon>getDataList(HSSFSheet sheet) throws Exception {

                   List<FsBudgetCommon>dataList = new ArrayList<FsBudgetCommon>();

                   for(int i = 1; i <= sheet.getLastRowNum(); i++) {

                            //判断是否空行

                            if(FsBudgetUtil.isBlankRow(sheet.getRow(i))) {

                                     continue;

                            }

                            FsBudgetCommonfsBudgetCommon = new FsBudgetCommon();

                            fsBudgetCommon

                                               .setFdSource(FsBudgetConstant.FS_BUDGET_SOURCE_BY_IMPORT);

                            //公司代码*

                            HSSFCellcell0 = sheet.getRow(i).getCell(0);

                            if(null != cell0) {

                                     StringfdCompanyCode = FsBudgetUtil.getCellValue(cell0);

                                     fsBudgetCommon.setFdCompany(fsBaseAccountingCompanyService

                                                        .findCompanyByCode(fdCompanyCode));

                            }

                            …

                            dataList.add(fsBudgetCommon);

                   }

                   returndataList;

         }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值