[代码] [Java]代码 package k.finance;

import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import j http://www.starkp.com/linked/20130228.do; xl.Sheet;

import jxl.Workbook;

import jxl.read.biff.BiffException;

import jxl.write.Label;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import org.apache.commons.lang3.StringUtils;

public class GetContentFromXls {

/**

* @param args

*/

public static void main(String[] args) {

String file = "d://cuc.xls";

GetContentFromXls.get(file);

}

public static void get(String file){

Workbook workbook = null;

try {

workbook = Workbook.getWorkbook(new File(file));

Sheet sheet = workbook.getSheet(0);

//取得文件中一共有多少行

int totalRows = sheet.getRows();

System.out.println("总行数:" totalRows);

//数据处置结果list

List> okList = new ArrayList>();

List> groupList = getGroupList(sheet, totalRows);

//得到每组的行数据

for(Map groupMap : groupList){

int sIdx = groupMap.get("s");

int eIdx = groupMap.get("e");

//取得项目编号,在每组的榜首行。用. split 之后 第5位是项目编号

String okProjCode = StringUtils.split(getCellValue2Trim(sheet, sIdx),".")[5];

//System.out.println("项目编号str:" okProjCode);

//取得门类,在每组的第二行。用. split 之后 第3位是门类

String okCostType = StringUtils.split(getCellValue2Trim(sheet, sIdx 1),".")[3];

//System.out.println("门类str:" okCostType);

//取得没项目的明细中,每组本月算计的开端、完毕索引

List> byhjGroupIdxList = getSumIdxGroup(sheet, sIdx, eIdx);

for(Map idxMap : byhjGroupIdxList){

Map okMap = new HashMap();

okMap.put("proj_code", okProjCode);

okMap.put("cost_type", okCostType);

String colYMStr = getCellValue2Trim(sheet, idxMap.get("s"));

String colMSumStr = getCellValue2Trim(sheet, idxMap.get("e"));

//System.out.println("年月列str : " colYMStr);

//System.out.println("月算计列str : " colMSumStr);

//取得你年月,取colYMStr前8位后trim

String[] ymVal = StringUtils.split(StringUtils.trimToEmpty(StringUtils.substring(colYMStr, 0, 8)),"-");

String okYear = ymVal[0];

String okMonth = ymVal[1];

okMap.put("year", okYear);

okMap.put("month", okMonth);

//System.out.println("年:" okYear " - 月:" okMonth);

//处置月算计列,按空格split

String[] sumVal = StringUtils.split(colMSumStr);

String okJie = sumVal[1];

String okDai = sumVal[2];

String okYe = sumVal[4];

okMap.put("jie", okJie);

okMap.put("dai", okDai);

okMap.put("ye", okYe);

//System.out.println("借:" okJie " - 贷:" okDai " - 余额:" okYe);

okList.add(okMap);

}

}

//System.out.println(okList);

//write to xls

toXls(okList);

} catch (BiffException | IOException | WriteException e) {

e.printStackTrace();

}finally{

workbook.close();

}

}

private static void toXls(final List> okList) throws WriteException, IOException {

WritableWorkbook workbook = null;

try {

workbook = Workbook.createWorkbook(new File("d://output" System.currentTimeMillis() ".xls"));

WritableSheet sheet = workbook.createSheet("sheet1", 0);

//写表头

sheet.addCell(new Label(1, 0, "项目编号"));

sheet.addCell(new Label(2, 0, "本钱类型"));

sheet.addCell(new Label(3, 0, "年"));

sheet.addCell(new Label(4, 0, "月"));

sheet.addCell(new Label(5, 0, "借"));

sheet.addCell(new Label(6, 0, "贷"));

sheet.addCell(new Label(7, 0, "本月余额"));

//写表格内容

for(int i=0;i map = okList.get(i);

sheet.addCell(new Label(1, i 1, map.get("proj_code")));

sheet.addCell(new Label(2, i 1, map.get("cost_type")));

sheet.addCell(new Label(3, i 1, map.get("year")));

sheet.addCell(new Label(4, i 1, map.get("month")));

sheet.addCell(new Label(5, i 1, map.get("jie")));

sheet.addCell(new Label(6, i 1, map.get("dai")));

sheet.addCell(new Label(7, i 1, map.get("ye")));

}

workbook.write();

} finally{

workbook.close();

}

}

private static List> getSumIdxGroup(Sheet sheet, int sIdx, int eIdx) {

//算计组明细的开端索引

int sumGroupStartIdx = sIdx 4;

//将包括“本月算计”的行打包,开端索引 4,去掉头部信息。并将包括本月算计的索引保存起来

List byhjIdxList = new ArrayList();

for(int i=sumGroupStartIdx;i<=eIdx;i ){

String byhjValStr = getCellValue2Trim(sheet, i);

//System.out.println(byhjValStr);

if(StringUtils.contains(byhjValStr, "本月算计")){

//System.out.println("本月算计所内行:A" i);

byhjIdxList.add(i);

}

}

//System.out.println(byhjIdxList);

//处置包括本月算计的组开端索引和组完毕索引

List> byhjGroupIdxList = new ArrayList>();

for(int i=0;i map = new HashMap();

map.put("s", sumGroupStartIdx);

map.put("e", e);

if(i 1 < byhjIdxList.size()){

if(StringUtils.contains(getCellValue2Trim(sheet,e 1),"本年累计")){

sumGroupStartIdx = e 2;

}else{

sumGroupStartIdx = e 1;

}

}

byhjGroupIdxList.add(map);

}

//System.out.println(byhjGroupIdxList);

return byhjGroupIdxList;

}

private static List> getGroupList(Sheet sheet, int totalRows) {

//containKEMUList寄存一切包括【科 目:】的行号

List containKEMUList = new ArrayList();

//取得文件中有多少组项目

for(int i=1;i<=totalRows;i ){

//取得col-A中的内容并去掉空格

String aVal = getCellValue2Trim(sheet,i);

//将col-A中包括【科 目:】字样的行提取出来

if(StringUtils.isNotBlank(aVal)

oracle erp 报表开发手册,处置OracleERP导出的报表文件相关推荐

  1. oracle系统报表开发工具,掌握七款实用报表开发工具,定制属于自己的报表

    阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...

  2. 从数据平台到报表开发,我靠这个零代码报表工具,转行后月薪3W

    偶尔会跟大数据这行里的朋友聊天,先说一个我听到的故事:有一京东的哥们,在那工作三年了,大数据平台岗.数仓搭好了之后,天天就是写SQL,一个月28k. 在京东待两年,那业务和调优的手法,再熟悉不过了,就 ...

  3. AO采集用友oracle,AO系统采集用友GRP-R9导出的ASD文件全过程

    AO2008系统采集用友GRP-R9导出的 ASD文件全过程 海城市审计局祁兆威 一.准备工作 (一)采集到的软件导出的文件列表为: GL_CZRZ.asd,GL_Kmye.asd,GL_Wlkm.a ...

  4. MSCRM中报表开发二:创建基于FetchXML报表

    1. 获取FetchXML.因为FetchXML难以撰写,所以我们一般都是使用高级查找来生成FetchXML或者通过其他工具来生成.我这里在商机界面通过高级查找制作了一个新的视图,名称为 商机查询,  ...

  5. MSCRM中报表开发一:创建基于SQL报表

    1.       新建报表项目.打开SQL Server Business Intelligence Development Studio,点击 文件 > 新建 > 项目,项目类型选择 商 ...

  6. ifs 报表开发手册_店长工作手册:连锁总部店长复制手册之店长手册对门店经营管理的编写...

    店长工作手册:连锁总部店长复制手册之店长手册对门店经营管理的编写 店长角色定位 店长工作思维的转变 这件东西怎么卖出去?-这批商品怎么卖出去? (政策与培训) 能卖什么就是什么?-想卖什么是什么? ( ...

  7. ifs 报表开发手册_房地产开发资质要求《暂定资质证书》相关规定

    房地产开发资质.<暂定资质证书>文件相关规定 新设立的房地产开发企业应当自领取营业执照之日起30日内,文件规定持下列文件到房地产开发主管部门备案: (一)营业执照复印件: (二)企业章程: ...

  8. 数据报表开发技巧:自动为数据报表添加【小计】、【总计】行

    在开发ERP系统的数据报表时,几乎都是需要看到[小计].[总计]这样的汇总数据的,在数据报表的显示列表中,最下面的一行通常就是[小计]或者[总计]的汇总行.如果手动为每个报表都增加汇总行,那也是一份不 ...

  9. ActiveReports报表开发案例:ERP等管理系统的开发与维护模式

    点击获取ActiveReports v15.0下载 一.企业背景 晋江市全顺软件,作为一家主要从事物流管理系统.ERP 管理系统等办公系统软件研发的解决方案供应商,为物流行业.中小型电商企业设计并开发 ...

最新文章

  1. PCL点云库学习笔记 点云的欧式聚类
  2. Qt 中使用QPainter时,实现坐标变化的方法
  3. oracle rac理论知识
  4. PHP设计模式(6)迭代器模式
  5. 【知云】第十二期:处于风口浪尖上的直播视频网站,如何快速部署直播监管?...
  6. java核心面试_Java核心面试问题
  7. 深度学习要多深_才能读懂人话?
  8. 大神演示win10系统语音识别应用的详细教程
  9. DELMIA软件:机器人固定点焊仿真
  10. Android路由器初始密码,了解路由器用户名和万能密码
  11. 图片转化word文档 在线免费转换
  12. 支付系统总结 ( 收单,收银,资产交互,账务 )
  13. 手把手教你用GoEasy实现Websocket IM聊天
  14. CF538H Summer Dichotomy
  15. 【经验分享】如何使用校园账号登录WOS(Web of Science)
  16. 对比学习论文综述(part4 transformer + 总结)
  17. 当程序员转行去做销售
  18. hive的大表join小表
  19. 今年大厂门槛高?阿里内部5份专属PDF带你激流勇进,厚积薄发,勇夺offer
  20. win10环境安装tensorflow-gpu,软件版本、硬件支持、安装过程

热门文章

  1. android如何与服务器交互?
  2. C# Socket初探
  3. 闲话 - 火车硬座座位分布图
  4. Lucene-01 全文检索基本介绍
  5. 数据结构——队列的C语言实现
  6. 第一章 计算机网络 3 标准化工作和相关组织 [计算机网络笔记] -简单浏览了解即可
  7. Leetcode--870. 优势洗牌
  8. java父包引用_父类引用指向子类对象(java)
  9. ORB论文研读与代码实现
  10. 1.MySQL数据库的介绍