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

[代码] [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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库表的软硬关联_Jimmy的关系型数据库设计心得 第一版

欢迎关注Jimmy的公众号&#xff1a;Jimmy嘚啵嘚&#xff0c;每周都有很多干货文章分享&#xff08;最近比较懒&#xff0c;先保证每周写几篇&#xff0c;等忙完了再每日更新&#xff09;最近在梳理以前设计关系型数据库的心得体会&#xff0c;或者斗胆说是方法论&#xff0c;梳…

linux交换分区目录,Linux添加swap交换分区

添加swap交换分区SWAP即交换分区是一种类似于Windows系统虚拟内存的功能&#xff0c;将一部分硬盘空间虚拟成内存来使用&#xff0c;从而解决内存容量不足的情况&#xff0c;因为SWAP毕竟是用硬盘资源虚拟的&#xff0c;所以速度上比真实物理内存要慢很多&#xff0c;一般只有当…

83998 连接服务器出错_来申请一个阿里云服务器玩玩?

对开发有兴趣的小伙伴们可以去阿里云官网申请一个免费入门级的服务器小试身手。那么如何申请免费服务器呢&#xff1f;(这里吐槽不能超链接外部网页)进入官网这里我选择了左边的(体验时间长一点)选择Ubuntu 14.04 32位的系统(上面的地域选择可以百度一下自己的地理位置适合选择…

python漂亮的螺旋_CANVAS 各种螺旋画出来的漂亮图案

JavaScript语言&#xff1a;JaveScriptBabelCoffeeScript确定var canvas document.createElement("canvas"),c canvas.getContext("2d");var w canvas.width window.innerWidth,h canvas.height window.innerHeight;c.fillStyle "rgb(10,10,10…

linux kdb内核调试器,使用KDB调试工具

KDB是针对官方版本的linux内核代码&#xff0c;所以无法使用Ubuntu自带的linux内核版本&#xff0c;需从官网上下载。1、从ftp://oss.sgi.com/www/projects/kdb/download上下载对应内核代码版本的KDB补丁&#xff0c;如linux内核2.6.18版本&#xff0c;需下载kdb-v4.4-2.6.18-c…

安卓项目打开有时候manifests不见了_手机通话音量太小?教你打开这个开关,再也不怕听不清了...

分享最实在的玩机技巧&#xff0c;洞察最前沿的科技资讯&#xff01;大家好&#xff0c;这里是手机科技园&#xff01;我们在生活中&#xff0c;经常用手机与家人朋友通话&#xff0c;可是有时候即使将音量开到最大&#xff0c;通话声音还是非常小&#xff0c;这到底是为什么呢…

lrzsz linux 安装目录,linux上安装lrzsz上传下载文件工具rz和sz

方法一&#xff1a;直接用yum安装lrzsz(推荐)yum install lrzsz -y注意:rhel安装完系统后 直接可使用 rz sz测试&#xff1a;运行rz弹出SecureCRT上传窗口&#xff0c;安装成功。这是个非常方便的工具。sz filename 下载rz上传rz -y 覆盖 上传sz -y filename 覆盖 下载上传下载…

为什么自己编写的页面总是在那里抖动_「内存抖动」?别再吓唬面试者们了行吗...

视频版本 本文在 B 站有对应的视频&#xff0c;如果你喜欢看视频版本&#xff0c;可以点 这里 去哔哩哔哩观看&#xff0c;或者点 这里 去 YouTube 观看。从「内存抖动」说起 面试官&#xff1a;你做过性能优化是吧。面试者&#xff1a;嗯是的&#xff0c;在卡顿和耗电问题上做…

vba 循环读取单元格_利用VBA打开顺序文件,并读取

大家好&#xff0c;疫情施虐&#xff0c;国外各地更有爆发的迹象&#xff0c;但无论怎样&#xff0c;我们一定要坚信&#xff0c;疫情终将会过去&#xff0c;曙光一定会到来。后疫情时代将会是一个全新的世界&#xff0c;很多理念都将被打破&#xff0c;大多数人不会再享受体制…

linux下collada-dom编译,Building Collada

文章声明&#xff1a;由于COLLADA以及IDE版本的更新&#xff0c;本文尽量以最新的版本为准&#xff0c;但是不保证一定适用于当前存在的版本&#xff0c;仅就一些编译上遇到的问题给出一些解答&#xff0c;希望能对需要进行COLLADA编程的人员带来一些帮助~1、Downloading the C…

opcua客户端实现断线重连_虹科教您|实现OPC UA C/S快速部署及数据采集

想获取更多IIOT干货请点击蓝字&#xff0c;关注我们虹科HMI解决方案高性能高防护宽温★★★★★简介边缘HMI需要实现的主要功能包括连接到该边缘HMI的边缘设备的数据采集&#xff0c;实现边缘计算、提供人机接口、数据的本地存储与上传。在工业4.0的进程中&#xff0c;越来越多…

特征级融合_遥感影像融合的方法有哪些

遥感影像融合的方法有哪些 多种名称&#xff0c;常见的有 图像复合(Image Fusion) 影像融合(Image Merging)、 数据复合(Data Fusion)、 数据综合(Data Integration)、 影像综合(Image Integration)、 信息复合(Information Combination) 目的&#xff1a;把那些在空间和时间上…

linux系统起来时间,linux 系统时间调整

BZOJ 3083&colon; 遥远的国度 &lbrack;树链剖分 DFS序 LCA&rsqb;3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 1280 MBSubmit: 3127 Solved: 795[Submit][Status][Discu ...poj 1696 Space Ant (极角排序)链接:http://poj.org/problem?id1696 Space Ant …

最大值减最小值等于区间长度_呆哥数学每日一题 ——三角函数求余弦最小值...

如果想要获取往期每日一题电子版&#xff0c;可以加我微信&#xff1a;daigemath166&#xff0c;备注&#xff1a;知乎 每日一题呆哥解析&#xff1a;今天我们来看一道三角函数求余弦最小值的题目这里条件只有一个&#xff0c;那么我们第一步就是应该把两个角联系起来&#xff…

python ide在哪个文件夹_Python IDE使用汇总

Pycharm分收费和Community版&#xff0c;一般Community版已经足够了。安装软件包也很简单&#xff0c;在Setting->Project Interpreter只要点一下就可以。在中国需要增加获取包的地址&#xff0c;可以在Manage Repositories中增加文件地址https://pypi.python.org/pypihttp:…

mac运行linux命令,iOS:mac.app执行shell命令

报错1&#xff1a;错误&#xff1a;/bin/bash: line 1: /Users/liuyaqiang/Desktop/GitHub/KTMRobot/auto.sh: Operation not permitted解决方法&#xff1a;Singing&Capabilitiesy移除AppSandbox代码import Cocoaclass CommandRunner: NSObject {/** 同步执行* command: s…

go channel 缓冲区最大限制_Go语言11周年,泛型问题有望明年得到解决

作者 | 田晓旭、万佳 近日&#xff0c;Go 团队发布长篇博文庆祝 Go 语言开源 11 周年。 Go 团队在博文写道&#xff0c;“回想 Go 语言十周年庆典恍如隔世。虽然 2020 年有诸多艰难&#xff0c;但我们一直在推动 Go 语言的发展&#xff0c;其中有不少值得回忆的美好瞬间。”1 G…

python 排列组合_python 编写排列组合

python在编写排列组合是会用到 itertools 模块 排列 import itertools mylist list(itertools.permutations([A,B,C,D],4)) # 全排列 print(mylist) mylist1 list(itertools.permutations([A,B,C,D],3)) # 4个里面选3个排列 print(mylist1) #5!1*2*3*4*5#0!1#M个选N个 M&#x…

深度linux 转中文,Linux Deepin 中文Linux系统的新希望?

Linux Deepin 中文Linux系统的新希望&#xff1f;出处&#xff1a;快科技 2010-08-02 22:51:18 作者&#xff1a;Plum 编辑&#xff1a;Plum[爆料] 收藏文章前言说到国产系统&#xff0c;我们想到的东西可能并不多&#xff0c;在这个Windows垄断的领域&#xff0c;国产的空…

python 谷歌地图api_《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档...

Foundations of Python Network Programing&#xff0c;Third Edition 《python网络编程》&#xff0c;本书中的代码可在Github上搜索fopnp下载本书的第一章中使用到了google地图的api来获取一个地址的经度和纬度&#xff0c;因为众所周知的原因会出现无法访问&#xff0c;我们…