日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/7/23 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)

總結

以上是生活随笔為你收集整理的oracle erp 报表开发手册,处置OracleERP导出的报表文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。