java操作Excel之POI(6)使用POI实现使用模板批量添加数据
action是用struts2写的;前端界面easyUI写的,
前端:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Basic DataGrid - jQuery EasyUI Demo</title>
- <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.3/themes/default/easyui.css">
- <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.3/themes/icon.css">
- <script type="text/javascript" src="jquery-easyui-1.3.3/jquery.min.js"></script>
- <script type="text/javascript" src="jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
- <script type="text/javascript" src="jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
- <script>
- //批量导入数据,打开dialog
- function openUploadFileDialog(){
- $("#dlg2").dialog('open').dialog('setTitle','批量导入数据');
- }
- //下载批量导入模板
- //userExporTemplate.xls位于WebContent/template/下面
- //一个纯的js来下载模板
- function downloadTemplate(){
- window.open('template/userExporTemplate.xls');
- }
- //上传Excel文件,交给后台解析
- //其中uploadForm的action=user!upload
- function uploadFile(){
- $("#uploadForm").form("submit",{
- success:function(result){
- var result=eval('('+result+')');
- if(result.errorMsg){
- $.messager.alert("系统提示",result.errorMsg);
- }else{
- $.messager.alert("系统提示","上传成功");
- $("#dlg2").dialog("close");
- $("#dg").datagrid("reload");
- }
- }
- });
- }
- </script>
- </head>
- <body>
- <!-- 一排操作按钮 -->
- <div id="toolbar">
- <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-import" plain="true" onclick="openUploadFileDialog()">用模版批量导入数据</a>
- </div>
- <!-- 批量导入数据模板Excel 的dialog -->
- <div id="dlg2" class="easyui-dialog" style="width:400px;height:180px;padding:10px 20px"
- closed="true" buttons="#dlg-buttons2">
- <form id="uploadForm" action="user!upload" method="post" enctype="multipart/form-data">
- <table>
- <tr>
- <td>下载模版:</td>
- <td><a href="javascript:void(0)" class="easyui-linkbutton" onclick="downloadTemplate()">导入模版</a></td>
- </tr>
- <tr>
- <td>上传文件:</td>
- <td><input type="file" name="userUploadFile"></td>
- </tr>
- </table>
- </form>
- </div>
- <div id="dlg-buttons2">
- <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="uploadFile()">上传</a>
- <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg2').dialog('close')">关闭</a>
- </div>
- </body>
- </html>
后端:
UserAction中upload方法:
- public class UserAction extends ActionSupport{
- private File userUploadFile; //用来接收上传的文件
- public File getUserUploadFile() {
- return userUploadFile;
- }
- public void setUserUploadFile(File userUploadFile) {
- this.userUploadFile = userUploadFile;
- }
- /**
- * 上传文件,解析Excel
- */
- public String upload() throws Exception{
- POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(userUploadFile));
- HSSFWorkbook wb = new HSSFWorkbook(fs);
- HSSFSheet hssfSheet = wb.getSheetAt(0); //获取第一个sheet页
- if(hssfSheet != null){
- for(int rowNum=1; rowNum<=hssfSheet.getLastRowNum(); rowNum++){
- HSSFRow hssfRow = hssfSheet.getRow(rowNum);
- if(hssfRow == null){
- continue;
- }
- User user = new User();
- user.setName(ExcelUtil.formatCell(hssfRow.getCell(0)));
- user.setPhone(ExcelUtil.formatCell(hssfRow.getCell(1)));
- user.setEmail(ExcelUtil.formatCell(hssfRow.getCell(2)));
- user.setQq(ExcelUtil.formatCell(hssfRow.getCell(3)));
- Connection conn = null;
- try{
- con=dbUtil.getCon();
- userDao.userAdd(con, user);
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- dbUtil.closeCon(con);
- }
- }
- }
- JSONObject result=new JSONObject();
- result.put("success", "true");
- ResponseUtil.write(ServletActionContext.getResponse(), result);
- return null;
- }
- }
对单元格进行分类处理(String、boolean、number)的ExcelUtil:
- /**
- * 处理Excel的util
- */
- public class ExcelUtil{
- /**
- * 传入Cell,根据Cell的类型转化,返回的都是String
- */
- public static String formatCell(HSSFCell hssfCell){
- if(hssfCell == null){
- return "";
- }else{
- if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){
- return String.valueOf(hssfCell.getBooleanCellValue());
- }else if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
- return String.valueOf(hssfCell.getNumericCellValue());
- }else{
- return String.valueOf(hssfCell.getStringCellValue());
- }
- }
- }
- }
图:
java操作Excel之POI(6)使用POI实现使用模板批量添加数据的更多相关文章
- java操作Excel之POI(5)利用POI实现使用模板批量导出数据
后台导出方法: 在源文件夹src下面放个准备好的模板:/com/cy/template/userExportTemplate.xls,这个模板有头部一行: /** * 后台导出方法 * 利用POI实现 ...
- java实现excel的导入导出(poi详解)[转]
java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava 经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...
- java操作Excel处理数字类型的精度损失问题验证
java操作Excel处理数字类型的精度损失问题验证: 场景: CELL_TYPE_NUMERIC-->CELL_TYPE_STRING--->CELL_TYPE_NUMERIC POI版 ...
- java操作Excel、PDF文件
java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...
- java操作excel 工具类
java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...
- Java 操作 EXCEL
今天帮朋友写了一段用来处理EXCEL内容的程序,在这里记录下自己的学习过程.主要是对EXCEL表格中的内容做分类和统计,使用计算机来做这种重复的机械性地工作再好不过了.首先,我们需要下载一个java操 ...
- JAVA操作Excel时文字自适应单元格的宽度设置方法
使用JAVA操作Excel通常都使用JXL,方法很简单网上也有很多的教程,然后往往一些细节性的问题却导致我们这些Programmer苦恼不已.这两天帮一个朋友做一个Excel表格自动生成的小软件,就遇 ...
- jxl的使用总结(java操作excel)
jxl.jar是通过java操作excel表格的工具类库: jxl.jar包:链接:http://pan.baidu.com/s/1o8qFJHw 密码:5jyq 1:通过模拟实现创建一个表格,然后模 ...
- Java操作Excel文件以及在Android中的应用
本文章由临江仙原创,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/10286563 Excel作为一种有格式的文件,可以使用Java来对 ...
随机推荐
- pymysql 单独获取表的栏位名称
有时需要获取表的栏位+数值,请参考 https://www.cnblogs.com/xibuhaohao/p/9996571.html 有时只需要栏位名称,那么可以使用 col=self.cursor ...
- XML解析之JAXP
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- Jmeter BeanShell 从数据库中获取数据并创建一个requesBody
一.前言 在测试接口的时候常常会使用到数据库中的数据,当要使用大量的数据时,仅仅使用数据库查询是不够的.还需要使用自动化让操作更简便. 下面以一个简单的例子阐述一下如何使用beanShell让代码更简 ...
- mac下搭建discuz论坛
1.开启web共享.(Mountain Lion参考:http://www.guomii.com/posts/30136) 2.支持php. http://www.cnblogs.com/elfsun ...
- 配置动态加载模块和js分模块打包,生产环境和开发环境公共常量配置
1. 话不多少 先上代码: route.js // 引用模板 分模块编译 const main = r => require.ensure([], () => r(require('. ...
- 类似select下拉选择框同时又支持手动输入的元素 datalist 介绍。
有时候我们会有这样的需求,通过使用下拉菜单给用户一定的选择范围,同时又可以使用户在找不到选择项的时候手动输入.这个时候我们就需要用到html5的datalist属性了. datalist包含<o ...
- QAV250四轴穿越机安装全程详解(多图)
QAV250四轴穿越机安装全程详解 最近团队准备使用轻型穿越机QAV250做实验,本文记录了QAV250的安装过程,整理了开箱后较合理的安装顺序,以及各个步骤的注意事项,希望对有需要的朋友有所帮助.主 ...
- WCF异常相关
1.端口没打开 解决办法: services.msc 启动Net.Tcp Port Sharing Service 2.由于访问被拒,服务终结点未能侦听 URI“net.tcp://localhost ...
- JS禁止用F5键
//禁止用F5键 function document.onkeydown() { if ( event.keyCode==116) { event.keyCode = 0; event.cancelB ...
- PC端体验效果最佳epub阅读器——iRead爱读书
官网:http://www.ireadhome.com/