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加行公式和验证的更多相关文章

  1. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  2. 一步步实现ABAP后台导入EXCEL到数据库【1】

    在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...

  3. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  4. 7,SFDC 管理员篇 - 数据模型 - 公式和验证 1

    1,自定义公式 Customize | Your Object | Fields | Add Fields Field SF的公式和Excel的公式差不多,都是支持各种运算和结果 例1,以opport ...

  5. DevExpress XtraGrid 数据导出导入Excel

    // <summary> /// 导出按钮 /// </summary> /// <param name="sender"></param ...

  6. java poi 导入excel

    最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包  http://pan.baidu.com/s/1sjPuWDR pack ...

  7. 基于 Aspose.Cells与XML导入excel 数据----操作类封装

    前言 导入excel数据, 在每个项目中基本上都会遇到,第三方插件或者基于微软office,用的最多的就是npoi,aspose.cells和c#基于office这三种方式,其中各有各的优缺点,在这也 ...

  8. java之导入excel

    接口: /** * * Description: 导入excel表 * @param map * @param request * @param session * @return * @author ...

  9. 向SQL Server中导入Excel的数据

    1.  手动界面导入Excel数据 同 https://jingyan.baidu.com/article/ce09321b9a0e252bff858ff9.html 首先打开并登陆sql serve ...

随机推荐

  1. log4j.xml配置示例

    这是log4j1.x版本讲解,log4j-1.2.16.jar    1. 一般的log4j.xml的两种配置方式: 1.Logger 完成日志信息的处理定义输出的层次和决定信息是否输出DEBUG&l ...

  2. HDU 4498 Function Curve (分段, simpson)

    转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 最近太逗了...感觉成都要打铁了...只能给队友端 ...

  3. 5.7.2.1 Math对象

    ECMAScript还为保存数学公司公式和信息提供了一个公共位置,即Math对象.与我们在JavaScript直接编写的计算功能相比,Math对象提供的计算功能执行起来要快得多.Math对象中还提供了 ...

  4. Java中的枚举类型详解

    枚举类型介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义 ...

  5. 实现将VirtualBox 虚拟机转换为KVM虚拟机的步骤

    原来在桌面上一直使用virtualbox虚拟机管理程序(VMM)构建虚拟机安装不同的操作系统,现在 研究linux下的KVM,能否将已经建立的virtualBox虚拟客户机(guest)转换为KVM虚 ...

  6. 脑波设备mindwave数据流二次开发示例

    数据流开发神念科技提供了两个文件ThinkGearStreamParse.h和ThinkGearStreamParse.cpp两个文件,主要接口为: 宏定义: /* Data CODE definit ...

  7. VC实现卡拉OK字幕叠加

    一. GDI编程基础 字幕叠加,应当是属于图形.图像处理的范畴.在Windows平台上,图形.图像处理的方法当然首选GDI(Graphics Device Interface,图形设备接口).GDI是 ...

  8. 现场故障案例:AIX安装Oracle10G runInstaller弹出错误一例

    AIX安装Oracle10G runInstallert弹出错误一例 环境: 系统:AIX5300-08 数据库:Oracle 10g(64bit) AIX客户机卸载oracle软件后,又一次安装or ...

  9. Bzoj2034 2009国家集训队试题 最大收益 贪心+各种优化+二分图

    这个题真的是太神了... 从一開始枚举到最后n方的转化,各种优化基本都用到了极致.... FQW的题解写了好多,个人感觉我全然没有在这里废话的必要了 直接看这里 各种方法真的是应有尽有 大概说下 首先 ...

  10. VS2015自定义注释内容

    一直想自动添加一些注释信息,找了好多种方式:各种插件什么的,最后偶然发现可以修改vs的模板可以做到,下面介绍如何改 首先找到vs的安装目录,如下是我的安装目录: D:\Program Files\VS ...