导入Excel加行公式和验证
package com.sprucetec.tms.controller.fee.export; import com.sprucetec.tms.controller.base.BaseFeeExportExcel;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List; /**
* 基础运费导出excel
* yangweiqiang
* 2016.7.19
*/
public class BasicDistributeFeeExportExcel extends BaseFeeExportExcel { public BasicDistributeFeeExportExcel(String title, String[] rowName, List<Object[]> dataList, HttpServletResponse response, HttpServletRequest request, String selectedCityName, String month) {
super(title, rowName, dataList, response, request, selectedCityName, month);
} /*
* 实现基础运费的导出逻辑
*/
@Override
public void export() throws Exception { //设置excel的表头
Workbook workbook = setExcelTitle();
HSSFSheet sheet = (HSSFSheet) workbook.getSheet(title); HSSFCellStyle style = getStyle(workbook); //将查询出的数据设置到sheet对应的单元格中
for (int i = 0; i < dataList.size(); i++) { Object[] obj = dataList.get(i);//遍历每个对象
HSSFRow row = sheet.createRow(i + 3);//创建所需的行数 for (int j = 0; j < obj.length; j++) {
HSSFCell cell = null; //设置单元格的数据类型
if (j == 0) {
cell = row.createCell(j);
cell.setCellValue(String.valueOf(i + 1));
} else {
cell = row.createCell(j);
if (!"".equals(obj[j]) && obj[j] != null) {
if (j == 10) {
int rownum = row.getRowNum() + 1;
String formula = "SUM(L" + rownum + ",O" + rownum + ",P" + rownum + ",Q" + rownum + ",R" + rownum + ",S" + rownum + ",W" + rownum + ")-SUM(T" + rownum + ",U" + rownum + ",V" + rownum + ")";
cell.setCellFormula(formula);
}
if (j == 11 || (14 <= j && j <= 22)) {
cell.setCellValue(Double.parseDouble(obj[j].toString())); //设置单元格的值
} else {
cell.setCellValue(obj[j].toString());
}
} else {
cell.setCellValue("");
}
}
cell.setCellStyle(style); //设置单元格样式
}
} //让列宽随着导出的列长自动适应
setSheetColumnWidthAutoResize(sheet, rowName.length); //添加数据校验
CellRangeAddress address1 = new CellRangeAddress(3, sheet.getLastRowNum(), 10, 11);
CellRangeAddress address2 = new CellRangeAddress(3, sheet.getLastRowNum(), 14, 22);
addSheetValidationByNumberData(sheet, Arrays.asList(address1, address2), 0, 10000); //设置二位小数
HSSFDataFormat dataFormat = (HSSFDataFormat) workbook.createDataFormat();
short formatStyle = dataFormat.getFormat("0.00");
int totalRows = dataList.size();
for (int i = 0; i < totalRows; i++) {
HSSFRow row = sheet.getRow(i + 3);
for (int j = 0; j < rowName.length; j++) {
if (j == 11 || (j >= 14 && j <= 22)) {
HSSFCell cell = row.getCell(j);
HSSFCellStyle tmpStyle = cell.getCellStyle();
tmpStyle.setDataFormat(formatStyle);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
}
}
} //do Export
doExport(workbook);
}
}
导入Excel加行公式和验证的更多相关文章
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...
- 一步步实现ABAP后台导入EXCEL到数据库【1】
在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 7,SFDC 管理员篇 - 数据模型 - 公式和验证 1
1,自定义公式 Customize | Your Object | Fields | Add Fields Field SF的公式和Excel的公式差不多,都是支持各种运算和结果 例1,以opport ...
- DevExpress XtraGrid 数据导出导入Excel
// <summary> /// 导出按钮 /// </summary> /// <param name="sender"></param ...
- java poi 导入excel
最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包 http://pan.baidu.com/s/1sjPuWDR pack ...
- 基于 Aspose.Cells与XML导入excel 数据----操作类封装
前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...
- java之导入excel
接口: /** * * Description: 导入excel表 * @param map * @param request * @param session * @return * @author ...
- 向SQL Server中导入Excel的数据
1. 手动界面导入Excel数据 同 https://jingyan.baidu.com/article/ce09321b9a0e252bff858ff9.html 首先打开并登陆sql serve ...
随机推荐
- Orcale语句大全
原文地址:http://www.cnblogs.com/omygod/archive/2007/08/31/876620.html Oracle 语句大全 1. Oracle安装完成后的初始口令? ...
- 制作U盘启动盘(以CentOS6.3为例)
借助UltraISO(软碟通),自己百度下载一个即可(同样适用于制作Windows启动盘). 选择文件→打开,选择ISO镜像所在目录,如下两幅图所示:
- Spark学习之RDD的理解
转自:http://www.infoq.com/cn/articles/spark-core-rdd/ 感谢张逸老师的无私分享 RDD,全称为Resilient Distributed Dataset ...
- shell实现死循环
参考自http://codingstandards.iteye.com/blog/780524 .while true do command; done .while : do command; do ...
- XML实例入门1
虽然网上会有XML入门或者多少天教会XML,一般都是从普通的功能概念开始啰嗦,个人还是比较喜欢从实例开始,遇到不懂直接查(不过这次选了一个比较难得例子,研究了好久^_^).刚开始看了一个vc6.0XM ...
- HTTP使用BASIC认证的原理及实现方法(还有NTLM方法,比较复杂)
一. BASIC认证概述 在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份证的方法,当一个客户端向HTTP服务 器进行数据请求时,如果客 ...
- php mvc 框架演示
<pre name="code" class="cpp"><pre name="code" class="pyt ...
- UVALive 6947 Improvements(DP+树状数组)
[题目链接] https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=sho ...
- java的表达式
Java是面向表达式的语言,Java中一个简单表达式可以是下面任意一种: ● 常量:7.false.● 单引号括起来的字符字面常量:'A'.'3'.● 双引号括起来的字符串字面常量:"foo ...
- The Highest Mark(01背包)
The Highest Mark Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...