springMVC导入报表,uuid使用,poi解析导入MySQL
来源:互联网 发布:手机事件提醒软件 编辑:程序博客网 时间:2024/06/06 08:43
今天继续昨天未完成工作,已经完工。
下面总结下我遇到的问题
1.使用springMVC上传文件,获得流以及条件,代码如下,
jsp部分代码
<h1>Please upload a file</h1> <!-- enctype(编码格式)必须为multipart/form-data --> <form method="post" action="../manager/test.do" enctype="multipart/form-data"> <input type="text" name="name"/> <input type="file" name="file"/> <input type="submit"/> </form>java后台接收代码
/** * @Title: test * @Description: TODO 初始化员工信息 * @author wuxiaolong */@RequestMapping(value = "/test",method = RequestMethod.POST)public ModelAndView initStaffInfo(@RequestParam("file") MultipartFile myfile, HttpServletRequest request){System.out.println("进入");return viewReportAssessmentOrderService.initUploadStaff(myfile ,request);}需要注意的是
①@RequestParam注解 要加上,否则获取不到参数
②要修改servlet-context.xml,加上
<!-- 这里申明的id必须为multipartResolver --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- one of the properties available; the maximum file size in bytes --> <property name="maxUploadSize" value="100000"/> </bean>
CommonsMultipartResolver允许设置的属性有:
defaultEncoding:表示用来解析request请求的默认编码格式,当没有指定的时候根据Servlet规范会使用默认值ISO-8859-1。当request自己指明了它的编码格式的时候就会忽略这里指定的defaultEncoding。
uploadTempDir:设置上传文件时的临时目录,默认是Servlet容器的临时目录。
maxUploadSize:设置允许上传的最大文件大小,以字节为单位计算。当设为-1时表示无限制,默认是-1。
maxInMemorySize:设置在文件上传时允许写到内存中的最大值,以字节为单位计算,默认是10240。
这篇文章写的很好http://haohaoxuexi.iteye.com/blog/1188116
附送jsp上传的demo http://blog.csdn.net/lookthesea/article/details/1617633
2.poi解析合并单元格,兵获取它的值
由于合并单元格后,假设为A1-A5为合并后的单元格,此时可以获取A1的值,但A2-A5的值为null
我写了一个方法,自动判断单元格是否为合并的并返回它实际的值,参考代码,
下面代码中首先通过最后一个方法得到
List<CellRangeAddress> rangeList,int i 是读取的行数。
/** * @Title: 获得单元格的值,如果是合并单元格的话有相应处理 * @Description: TODO * @author wuxiaolong * @param sheet * @param rangeList * @param i * @return */public String getRangeValue(Sheet sheet,List<CellRangeAddress> rangeList,int i){Boolean flag=this.isCombineCell(rangeList, sheet.getRow(i).getCell(1), sheet);if(flag){return this.getMergedRegionValue(sheet, i,1);}return null;}/*** 判断单元格是否为合并单元格* * @param listCombineCell* 存放合并单元格的list* @param cell* 需要判断的单元格* @param sheet* sheet* @return*/public Boolean isCombineCell(List<CellRangeAddress> listCombineCell,Cell cell, Sheet sheet) {int firstC = 0;int lastC = 0;int firstR = 0;int lastR = 0;for (CellRangeAddress ca : listCombineCell) {// 获得合并单元格的起始行, 结束行, 起始列, 结束列firstC = ca.getFirstColumn();lastC = ca.getLastColumn();firstR = ca.getFirstRow();lastR = ca.getLastRow();if (cell.getColumnIndex() <= lastC&& cell.getColumnIndex()>= firstC) {if (cell.getRowIndex() <= lastR && cell.getRowIndex() >= firstR) {return true;}}}return false;}/** * @Title: 获取合并单元格的值 * @Description: TODO * @author wuxiaolong * @param sheet * @param row * @param column * @return */public String getMergedRegionValue(Sheet sheet, int row, int column) { int sheetMergeCount = sheet.getNumMergedRegions(); for (int i = 0; i < sheetMergeCount; i++) { CellRangeAddress ca = sheet.getMergedRegion(i); int firstColumn = ca.getFirstColumn(); int lastColumn = ca.getLastColumn(); int firstRow = ca.getFirstRow(); int lastRow = ca.getLastRow(); if (row >= firstRow && row <= lastRow) { if (column >= firstColumn && column <= lastColumn) { Row fRow = sheet.getRow(firstRow); Cell fCell = fRow.getCell(firstColumn); return getCellFormatValue(fCell); } } } return null; }/** * 合并单元格处理,获取合并行 * @param sheet * @return List<CellRangeAddress> */ public List<CellRangeAddress> getCombineCell(Sheet sheet) { List<CellRangeAddress> list = new ArrayList<CellRangeAddress>(); //获得一个 sheet 中合并单元格的数量 int sheetmergerCount = sheet.getNumMergedRegions(); //遍历合并单元格 for(int i = 0; i<sheetmergerCount;i++) { //获得合并单元格加入list中 CellRangeAddress ca = sheet.getMergedRegion(i); list.add(ca); } return list; }
3.我在java后台生成一个uuid序列号,如果要存入的字段在数据库中是主键,那么uuid会自动改写,就是你在java后台获得的不是实际存入数据库的,这时如果有外键关联的话,先生成uuid,然后使用dao.add(entity);返回entity.getUUID即可,再操作关联字段。
uuid关键代码
本来搜到一个很不多的文章,没收藏,大家自己百度吧,很多
mysql 里面可以用uuid()语句来生成一个UUID:
select uuid();
或 select replace(uuid(), '-', '');
直接在insert语句中插入UUID作主键的用法(简便):
insert into Price( Name, UUID, Price, BID) values('FEIFEI_TEST', uuid(), 32, 3);
UUID
UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。
UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft’s Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。
是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。
使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用惟一标识符有非常大的区别。
通用惟一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球惟一标识符(GUID),这也是通用惟一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用惟一标识符是在网罗计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。
以上摘自http://baike.baidu.com/view/1052579.htm
- springMVC导入报表,uuid使用,poi解析导入MySQL
- SpringMVC实现poi 解析excel 导入导出
- SpringMVC实现poi 解析excel 导入导出
- POI报表导入导出
- SpringMvc 使用poi导入导出Excel
- SpringMvc 使用poi导入导出Excel
- SpringMvc 使用poi导入导出Excel
- SpringMvc 使用poi导入导出Excel
- springMVC+poi导入excel
- springMVC导入excle poi
- poi解析excel导入MySQL数据库
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据
- SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库
- SSH框架下导入excel,POI解析导入MySql
- POI报表--导入和导出!
- 使用工具类 使用poi导入导出excel报表
- 使用 poi 导入execl模版文件添加数据制作报表
- maven+springmvc+POI导入Excel
- 【数据结构】链式队列
- 关于world wind java 2.0在applet发布的问题
- android ffmpeg 参数
- vs2012工程的warning MSB8012解决办法
- hadoop 2.2、 hbase0.94.18 集群安装
- springMVC导入报表,uuid使用,poi解析导入MySQL
- js和jq获取下来列表选中项的值和文本
- bash: ***: No such file or directory
- mysql 事件调度存储过程
- Axis2 Web服务配置文件services.xml详解
- javascript 传递 post表单
- ABAP与Java数据类型的对应关系
- Android官方技术文档翻译——ApplicationId 与 PackageName
- 正整数异或值问题