1.excel左上角有绿色小图标说明单元格格式不匹配 
2.模板中设置自动计算没效果,需要加上sheet.setForceFormulaRecalculation(true);

FileInputStream fs = new FileInputStream(path);  //使用导出模板文件
POIFSFileSystem ps = new POIFSFileSystem(fs); //使用POI提供的方法得到excel的信息
FileOutputStream out = new FileOutputStream(outFileName); //向outFileName中写数据 HSSFWorkbook wb = new HSSFWorkbook(ps);
HSSFSheet sheet = wb.getSheetAt(0); //获取到工作表
sheet.setForceFormulaRecalculation(true); //设置自动计算 //隐藏:根据条件设置颜色:但是由于设置颜色后,就无法通过模板里面的公式做出计算,所以去掉
//字体:绿色、13号大小、水平垂直居中、保留两位小数
HSSFDataFormat df = wb.createDataFormat(); // 此处设置数据格式
Font font1 = wb.createFont();
font1.setColor(HSSFColor.SEA_GREEN.index);
font1.setFontHeightInPoints((short)13); //字体大小
font1.setFontName("宋体"); HSSFCellStyle style1 = wb.createCellStyle();
style1.setFont(font1);
style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
style1.setDataFormat(df.getBuiltinFormat("0.00"));//保留两位小数点

区域数据导入(Apache POI

操作office办公文档;

 

区域:国家划分行政单位。 省市区构成;

 

1.1 Jquery OCUpload一键上传插件

 

1、 传统文件上传:页面三要素

a) 表单提交的方式POST

b) 表单中enctype=multipart/form-data

c) 在表单中存在<input  type=file name=test>

2、 ocUpload使用:

a) 引入js文件

<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>

<script type="text/javascript" src="${pageContext.request.contextPath }/js/ocupload/jquery.ocupload-1.1.2.js"></script>

b) 在页面提供任意的元素 给出id

c) 在页面加载完成后调用uplaod方法:动态修改html元素

 -

1.2 在区域页面使用ocUpload

1、 页面:/pages/base/area.jsp

 

 

1.3 在服务端接收上传文件

 

a) 创建三层接口,类

  1. 通过spring组件扫描创建service,action的对象
  2. 通过spring-data-jpa创建dao的对象

b) 完成注入

c) 配置struts2注解

d) 添加方法

e) 配置结果视图

1.4 Apache POI

 

 

官网:http://poi.apache.org/

 

导入依赖:

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>${poi.version}</version>

</dependency>

1.4.1 Demo

 

HSSF:操作07版本之前 后缀名xxx.xls

XSSF:操作07版本之后 后缀名xx.xlsx

 

 

 

需求:解析本地磁盘excel文件中内容:

 

 

public static void main(String[] args) throws Exception {

//解析本地磁盘exel文件 后缀名:xls

//文件目录

String pathname = "H:\\北京Java271期_速运快递\\速运快递项目-day04\\资料\\03_区域测试数据\\区域导入测试数据.xls";

//使用POI提供API读取文件

//:excel文件对象

//07版本  XSSFWorkbook

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(new File(pathname)));

//解析文件中数据

//从文件对象中获取标签页

HSSFSheet sheet = workbook.getSheetAt(0);

//遍历标签页中行

for (Row row : sheet) {

//遍历每一行中单元格中数据

System.out.println();

for (Cell cell : row) {

System.out.print(cell.getStringCellValue()+"  ");

}

}

}

 

1.4.2 在项目中使用POI

//定义变量接收上传文件

private File upload;

//接收文件MIME类型,文件名称

private String uploadContentType;

private String uploadFileName;

public void setUpload(File upload) {

this.upload = upload;

}

public void setUploadContentType(String uploadContentType) {

this.uploadContentType = uploadContentType;

}

public void setUploadFileName(String uploadFileName) {

this.uploadFileName = uploadFileName;

}

/**

* @Description: 通过POI解析excel文件中数据

*/

@Action("areaAction_importXls")

public String importXls() throws Exception {

List<Area> list = new ArrayList<>();

//创建excel文件对象

HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(upload));

//获取标签页

HSSFSheet sheet = workbook.getSheetAt(0);

//遍历标签页获取行

for (Row row : sheet) {

//忽略标题行

if(row.getRowNum()==0){

continue;

}

String id = row.getCell(0).getStringCellValue();

String province = row.getCell(1).getStringCellValue();

String city = row.getCell(2).getStringCellValue();

String district = row.getCell(3).getStringCellValue();

String postcode = row.getCell(4).getStringCellValue();

//创建区域对象

Area area = new Area(id, province, city, district, postcode, null, null);

list.add(area);

}

areaService.save(list);

//释放资源

workbook.close();

//由于提交表单到Iframe中,故配置结果视图也看不到

return NONE;

}



POI技术的更多相关文章

  1. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  2. java的poi技术写Excel的Sheet

    在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-20 ...

  3. java的poi技术读,写Excel[2003-2007,2010]

    在上一篇blog:java的poi技术读取Excel[2003-2007,2010] 中介绍了关于java中的poi技术读取excel的相关操作 读取excel和MySQL相关: java的poi技术 ...

  4. java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  5. java的poi技术读取和导入Excel实例

    本篇文章主要介绍了java的poi技术读取和导入Excel实例,报表输出是Java应用开发中经常涉及的内容,有需要的可以了解一下. 报表输出是Java应用开发中经常涉及的内容,而一般的报表往往缺乏通用 ...

  6. java的poi技术读取Excel数据

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  7. java poi技术读取到数据库

    https://www.cnblogs.com/hongten/p/java_poi_excel.html java的poi技术读取Excel数据到MySQL 这篇blog是介绍java中的poi技术 ...

  8. java的poi技术读取Excel[2003-2007,2010]

    这篇blog主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx. 读取excel和MySQL相关: ja ...

  9. apache POI技术的使用

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 下载开发包: 解压上面的zip文件: 在项目中引入 ...

  10. Java中导入导出Excel -- POI技术

    一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实 ...

随机推荐

  1. LinuxCentos6安装MySql workbench

    参考地址:http://www.cnblogs.com/elaron/archive/2013/03/19/2968699.html

  2. dx工具(android将jar包转成dex格式二进制jar包工具)

    博客分类: android 时钟 dx工具二进制jar包  好吧,不得不承认这个工具真心难找,也不知道自己sdk里以前怎么就有了,还好给了师傅一份,现在重装系统从网上找这个工具都找不到. 将platf ...

  3. Java Integer和String内存存储

    标签: java内存string 2016-01-10 12:51 1545人阅读 评论(2) 收藏 举报  分类: Java(7)  版权声明:本文为博主原创文章,未经博主允许不得转载. 先看代码: ...

  4. 微信小程序之wx.requestPayment 发起微信支付

    wx.requestPayment 发起微信支付 timeStamp 时间戳 nonceStr 随机字符串 package 统一下单接口返回的 prepay_id 参数值 signType 签名算法 ...

  5. 三个线程打印ABC10次,ABCABCABC....

    // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream&g ...

  6. StringBuilder与StringBuffer的区别

    相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类.St ...

  7. IDA Pro 权威指南学习笔记(六) - 次要的 IDA 显示窗口

    十六进制窗口 IDA 十六进制窗口可以配置为显示各种格式,并可作为十六进制编辑器使用 默认情况下,十六进制窗口显示程序内容和列表的标准十六进制代码,每行显示 16 个字节,以及其对应的 ASCII 字 ...

  8. Three.js黑暗中的萤火虫

    效果图 demo import './index.css'; // stats var stats; (function(){ stats = new Stats(); document.body.a ...

  9. 一个电脑同时运行 64bit 和 32bit 的eclipse 如何匹配 jdk环境

    一个电脑同时运行 64bit 和 32bit   的  eclipse 如何匹配 jdk环境 1 eclipse 分 64bit 和 32bit 两种.  64bit的eclipse 只能搭配 64b ...

  10. oracle 11g 导出空表

    正常情况下,oracle11g的 exp命令无法导出空表,弥补这个缺陷的方法是 在空表创建之前,更改系统设置: show parameter deferred_segment_creation 查看, ...