- 浏览: 979566 次
文章分类
- 全部博客 (428)
- Hadoop (2)
- HBase (1)
- ELK (1)
- ActiveMQ (13)
- Kafka (5)
- Redis (14)
- Dubbo (1)
- Memcached (5)
- Netty (56)
- Mina (34)
- NIO (51)
- JUC (53)
- Spring (13)
- Mybatis (17)
- MySQL (21)
- JDBC (12)
- C3P0 (5)
- Tomcat (13)
- SLF4J-log4j (9)
- P6Spy (4)
- Quartz (12)
- Zabbix (7)
- JAVA (9)
- Linux (15)
- HTML (9)
- Lucene (0)
- JS (2)
- WebService (1)
- Maven (4)
- Oracle&MSSQL (14)
- iText (11)
- Development Tools (8)
- UTILS (4)
- LIFE (8)
最新评论
-
Donald_Draper:
Donald_Draper 写道刘落落cici 写道能给我发一 ...
DatagramChannelImpl 解析三(多播) -
Donald_Draper:
刘落落cici 写道能给我发一份这个类的源码吗Datagram ...
DatagramChannelImpl 解析三(多播) -
lyfyouyun:
请问楼主,执行消息发送的时候,报错:Transport sch ...
ActiveMQ连接工厂、连接详解 -
ezlhq:
关于 PollArrayWrapper 状态含义猜测:参考 S ...
WindowsSelectorImpl解析一(FdMap,PollArrayWrapper) -
flyfeifei66:
打算使用xmemcache作为memcache的客户端,由于x ...
Memcached分布式客户端(Xmemcached)
artDialog官网:http://www.daimajiayuan.com/download/201304/yulan/artDialog4.1.7/
artDialog 配置参数:http://www.cnblogs.com/mfc-itblog/p/5648717.html
jQuery插件之ajaxFileUpload:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html
页面:
//Controller
//TestService
//Excel读取工具
artDialog 配置参数:http://www.cnblogs.com/mfc-itblog/p/5648717.html
jQuery插件之ajaxFileUpload:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html
页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title></title> <!--引入弹窗组件start--> <!-- <script type="text/javascript" src="${base}/res/zDialog/zDrag.js"></script> <script type="text/javascript" src="${base}/res/zDialog/zDialog.js"></script> --> --> <link href="${base}/res/artDialog-5.0.4/skins/default.css" rel="stylesheet" type="text/css"/> <script src="${base}/res/artDialog-5.0.4/artDialog.min.js" type="text/javascript"></script> <script type="text/javascript" src="${base}/res/ajaxfileupload/ajaxfileupload.js"></script> <script type="text/javascript"> //alert("${base}"); var iDialog ; function importDialog(){ var updateHtml = '<p id="importMessage" style="display:none;">正在导入信息...</p>'+ '<table id="updateTable">'+ '<tr>'+ '<td style="width:40px;text-align: right;">文件:</td>'+ '<td><input type="file" id="execelFile" name="execelFile" onchange="fileType(this)"/></td>'+ '</tr>'+ '<tr>'+ '<td style="text-align: center;" colspan="2">'+ '<input class="upload-file" type="button" value="上传" onclick="update()" style="height:20px;width:120px;margin-left:50px;"/>'+ '</td>'+ '</tr>'+ '</table>'; $("#content").html(updateHtml); var htmlContent = $("#content").html(); iDialog = $("#importDialog").dialog({ title:"信息导入", height: 150, width: 350, modal: true, content:htmlContent }); $("#content").css("display","table"); } function fileType(obj){ var fileType=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获得文件后缀名 if(fileType != '.xls' ){ alert("仅可上传Excel2003文件格式(.xls)"); $("#execelFile").val(''); } var fileName = obj.value; $("#fileName").val(fileName); } function update(){ if($("#execelFile").val()==""){ alert("仅可上传Excel2003文件格式(.xls)"); $("#execelFile").val(''); } $("#updateTable").css("display","none"); $("#importMessage").css("display","inline-block"); $.ajaxFileUpload({ url : "importExcel.do", secureuri : false, fileElementId : 'execelFile', dataType : 'text', success : function(data) { $("#content").html(data); //alert(data); //iDialog.close(); }, error : function(data) { location.reload(); } }); } </script> </head> <body> <div> <input class="query" type="button" value="导入" onclick="importDialog();" style="height:20px;width:120px;margin-left: 115px;"/> [align=right;]文件:</td> <td><input type="text" id="fileName" name="fileName" /></td> <td><input type="file" id="execelFile" name="execelFile" onchange="fileType(this)"/></td> </tr> <tr> <td style="text-align: center;" colspan="2"> <input class="upload-file" type="button" value="上传" onclick="update()" style="height:20px;width:120px;margin-left:50px;"/> </td> </tr> </table> --> [/align] </div> </body> </html>
//Controller
@RequestMapping(value = "/test/importExcel") public void importExcel(HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "execelFile", required = false) MultipartFile file) { ... testService.importExcel(file) ... }
//TestService
public String importExcel(MultipartFile file) throws ExcelParseException { String result = null; // 存入服务器目录 String fileName = ""; String filePath = PathUtil.getClasspath(); if (file != null && file.getSize() > 0) { fileName = FileUpload.fileUp(file, filePath, DateUtil.getSeconds()); } try{ // 读取Excel文件 List<HashMap> readExcel = ExcelUtils.readExcel(filePath, fileName, 0, 0, 0); if (readExcel == null || readExcel.size() <= 1) { throw new ExcelParseException("读取文件失败!可能原因如下:\n1、文件为无效文件\n2、文件无记录"); } //数据库操作 } ... }
//Excel读取工具
package util; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.VerticalAlignment; import jxl.write.Colour; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class ExcelUtils { /** * @param filepath //文件路径 * @param filename //文件名 * @param startrow //开始行号 * @param startcol //开始列号 * @param sheetnum //sheet * @return list */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static List<HashMap> readExcel(String filepath, String filename, int startrow, int startcol, int sheetnum) { List<HashMap> varList = new ArrayList<HashMap>(); try { File target = new File(filepath, filename); FileInputStream fi = new FileInputStream(target); HSSFWorkbook wb = new HSSFWorkbook(fi); HSSFSheet sheet = wb.getSheetAt(sheetnum); //sheet 从0开始 int rowNum = sheet.getLastRowNum() + 1; //取得最后一行的行号 for (int i = startrow; i < rowNum; i++) { //行循环开始 HashMap varpd = new HashMap(); HSSFRow row = sheet.getRow(i); //行 int cellNum = row.getLastCellNum(); //每行的最后一个单元格位置 for (int j = startcol; j < cellNum; j++) { //列循环开始 HSSFCell cell = row.getCell(Short.parseShort(j + "")); String cellValue = null; if (null != cell) { switch (cell.getCellType()) { // 判断excel单元格内容的格式,并对其进行转换,以便插入数据库 case 0: cellValue = String.valueOf((int) cell.getNumericCellValue()); break; case 1: cellValue = cell.getStringCellValue(); break; case 2: cellValue = cell.getNumericCellValue() + ""; // cellValue = String.valueOf(cell.getDateCellValue()); break; case 3: cellValue = ""; break; case 4: cellValue = String.valueOf(cell.getBooleanCellValue()); break; case 5: cellValue = String.valueOf(cell.getErrorCellValue()); break; } } else { cellValue = ""; } varpd.put("var"+j, cellValue); } varList.add(varpd); } } catch (Exception e) { System.out.println(e); } return varList; } /** * @param dirPath:文件要保存的目录 * @param fileName:文件要保存的文件名 * @param title:报表的题目 * @param columnTitle:列名集合(类型为List) * @param text:正文数据(类型为两级嵌套List) * return boolean */ public static boolean writeExcel(String dirPath, String fileName, String title,List columnTitle, List text) { WritableWorkbook workBook = null; WritableSheet sheet = null; if (dirPath == null || "".equals(dirPath) || fileName == null || "".equals(fileName)) { System.out.println("建立excel文件失败:路径或文件名为空"); return false; } File filePath = new File(dirPath); if (!filePath.exists()) { // 如果文件要保存的目录不存在则产生该目录 if (!filePath.mkdir()) { System.out.println("建立excel文件失败:无法建立该目录"); return false; } } // 在该目录下产生要保存的文件名 String excelPath = dirPath + "/" + fileName + ".xls"; File excelFile = new File(excelPath); // 以下开始输出到EXCEL try { if (!excelFile.exists()) { if (!excelFile.createNewFile()) { System.out.println("建立excel文件失败:建立excel文件发生异常"); return false; } } /** **********创建工作簿************ */ workBook = Workbook.createWorkbook(excelFile); /** **********创建工作表************ */ sheet = workBook.createSheet("Sheet1", 0); // SheetSettings sheetSet = sheet.getSettings(); // sheetSet.setProtected(false); /** ************设置单元格字体************** */ WritableFont headFont = new WritableFont(WritableFont.createFont("宋体"), 16, WritableFont.BOLD); WritableFont head2Font = new WritableFont(WritableFont.createFont("宋体"), 13, WritableFont.BOLD); /** ************以下设置几种格式的单元格************ */ // 用于表头 WritableCellFormat wcf_head = new WritableCellFormat(headFont); wcf_head.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐 wcf_head.setAlignment(Alignment.CENTRE); // 文字水平对齐 wcf_head.setWrap(false); // 文字是否换行 // 用于第三行列名 WritableCellFormat wcf_column = new WritableCellFormat(head2Font); wcf_column.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条 wcf_column.setVerticalAlignment(VerticalAlignment.TOP); wcf_column.setAlignment(Alignment.LEFT); // 文字左对齐 wcf_column.setBackground(Colour.GRAY_25); wcf_column.setWrap(true); // 文字是否换行 // 用于正文 WritableCellFormat wcf_center = new WritableCellFormat(new WritableFont(WritableFont.createFont("宋体"), 13)); wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条 wcf_center.setVerticalAlignment(VerticalAlignment.TOP); // 文字垂直对齐 wcf_center.setAlignment(Alignment.LEFT); // 文字水平对齐 wcf_center.setWrap(true); // 文字是否换行 /** ************单元格格式设置完成****************** */ sheet.setColumnView(0, 10);sheet.setColumnView(1, 10);sheet.setColumnView(2, 20); sheet.setColumnView(3, 16);sheet.setColumnView(4, 16);sheet.setColumnView(5, 20); sheet.setColumnView(6, 20);sheet.setColumnView(7, 19);sheet.setColumnView(8, 16); sheet.setColumnView(9, 16);sheet.setColumnView(10, 16);sheet.setColumnView(11, 16); sheet.setRowView(0, 640); sheet.getSettings().setLeftMargin(0.1d);//0.1d=0.26cm sheet.getSettings().setRightMargin(0.1d); /** ***************以下是报表的内容********************* */ // 合并单元格设置excel的题目 sheet.mergeCells(0, 0, columnTitle.size() - 1, 0); sheet.addCell(new Label(0, 0, title, wcf_head)); int x = 1; // 设置列名 for (int i = 0; i < columnTitle.size(); i++) { sheet.addCell(new Label(i, x, String.valueOf(columnTitle.get(i)), wcf_column)); } x = x + 1; // 写入正文数据 for (int i = 0; i < text.size(); i++) { List content = (List) text.get(i); if (content != null && content.size() > 0) { for (int j = 0; j < content.size(); j++) { String data = String.valueOf(content.get(j)); sheet.addCell(new Label(j, x + i, data, wcf_center)); } } } /** **********以上所写的内容都是写在缓存中的,下一句将缓存的内容写到文件中******** */ workBook.write(); } catch (Exception e) { System.out.println("建立excel文件失败:" + e.getMessage()); return false; } finally { /** *********关闭文件************* */ try { if (workBook != null) { workBook.close(); } } catch (Exception ex) { System.out.println("关闭文件流失败:" + ex.getMessage()); return false; } } return true; } }
- ajaxfileUpload_artDialog.rar (10 KB)
- 下载次数: 0
- dialog.rar (4.1 KB)
- 下载次数: 0
发表评论
-
下拉多选框bootstrap-multiselect教程
2017-05-11 16:24 32524bootstrap-multiselect:https://g ... -
BootStrap五星评分插件使用详解
2017-01-12 15:14 10608插件:http://www.jq22.com/jquery-i ... -
如何阻止Form表单中的Button自动提交
2016-07-26 18:37 3774在Form表单中加button的话,点击事件触发会自动提交表单 ... -
JavaScript正则表达式实例
2016-06-15 17:43 530JS正则基础知识:http://w ... -
FusionChartsFree在JSP中的用法
2016-05-31 11:14 880FusionCharts简单教程(四)-----基本数字格式: ... -
js-repalace&Regexp
2016-04-25 15:56 526<html> <head> < ... -
CKEditor 用法
2016-03-18 16:32 769<script type="text/java ... -
textarea使用注意的事项
2016-03-17 09:08 5051.disabled 和 readonly的区别 ...
相关推荐
综上所述,SpringMVC与AJAXFileUpload的结合使用,可以实现高效且用户体验良好的文件上传功能。在实际开发中,我们需要关注前后端的交互细节,同时确保安全性与性能。在项目中,`upload`目录可能包含了相关的示例...
这里,AjaxFileUpload使用Ajax技术实现了文件上传时页面的不刷新。 2. **文件上传**:文件上传是Web应用程序的基本功能之一,允许用户将本地文件传送到服务器。在AjaxFileUpload中,这个过程是在后台完成的,用户...
通过修改终于使得ajaxfileupload兼容jquery3,代码已上线运行。
- **前端与后端通信**:AjaxFileUpload使用Ajax技术,实现了前端与后端PHP脚本的通信。 - **文件上传安全**:`upload.php`应包含防止非法文件上传的措施,如检查文件类型和大小。 - **错误处理**:前端和后端都需要...
在提供的`ajaxfileupload使用方法.txt`文档中,应该详细解释了如何配置和使用AjaxFileUpload.js,包括所有可用的选项和回调函数的用法。通过仔细阅读这份文档,开发者可以更好地理解和利用这个库来实现高效、用户...
ajaxFileUpload.js 很多同名的,因为做出来一个很容易。 我用的是这个:https://github.com/carlcarl/AjaxFileUpload 下载地址在这里:http://xiazai.jb51.net/201701/yuanma/ajaxfileupload(jb51.net).rar ...
其次,关于jQuery 1.7的兼容性问题,这可能涉及到AjaxFileUpload使用了一些在新版本中已被弃用或者改变的方法。jQuery的每个版本都有可能对API进行调整,因此,旧的插件或代码可能需要更新以适应新的库。对于...
在本文中,我们将深入探讨`ajaxfileupload.js`的完整使用方法,以及它与jQuery的集成。`ajaxfileupload.js`是一个JavaScript库,用于实现异步文件上传功能,避免了传统文件上传时页面刷新的问题。它与jQuery的结合...
1. **无需页面刷新**:使用`ajaxFileUpload`,文件上传过程中,页面不会重新加载,用户可以继续进行其他操作。 2. **进度反馈**:可以方便地添加进度条显示文件上传进度,提升用户体验。 3. **错误处理**:异步上传...
本篇文章将深入探讨`AjaxFileUpload.js`的工作原理、使用方法及其相关知识点。 `AjaxFileUpload.js`通常与服务器端的脚本配合使用,如PHP、ASP.NET或Node.js等,以接收并处理上传的文件。它利用HTML5的File API和...
在本文中,我们将深入探讨AjaxFileUpload.js的工作原理、使用方法以及相关的前端文件上传技术。 一、AjaxFileUpload.js概述 AjaxFileUpload.js是基于Ajax技术的,其主要目的是解决传统HTML表单提交文件时页面必须...
ajaxfileupload.js用于文件上传
`ajaxFileUpload`主要依赖于jQuery库,因此在使用前确保已经引入了jQuery。首先,我们需要在HTML页面中添加一个用于选择文件的`<input>`元素,例如: ```html ``` 接下来,我们需要编写JavaScript代码来初始化`...
**AjaxFileUpload** 是一个JavaScript库,主要用于实现无刷新的文件上传功能,尤其适用于上传图片。这个库在前端处理上提供了高效且用户友好的体验,因为它允许用户在不重新加载整个网页的情况下完成文件上传操作。...