P4-15 案例:计算公司财务报表

案例:计算公司财务报表


需求说明

  • “公司账目2021年.xlsx”,计算每个月的学费收入的波动图

思路

  • 1.打开xlsx
  • 2.先按照日期月份去算,然后再看收支类别是否为”学费收入” ,
  • 3.然后相加 赋值给变量
  • 4.制作波动图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* - "公司账目2021年.xlsx",计算每个月的学费收入的波动图
*
* 思路
* - 1.打开xlsx
* - 2.先按照日期月份去算,然后再看收支类别是否为"学费收入" ,
* - 3.然后相加 赋值给变量
* - 4.制作波动图
*/
Workbook workbook = ExcelHelpers.openFile("D:/JavaTest1/公司账目2021年.xlsx");
int sheetmax = workbook.getNumberOfSheets();
double one=0;
double two=0;
double three=0;
for (int sheetIndex=0;sheetIndex<sheetmax;sheetIndex++) //循环读取页签中的内容 sheet
{
Sheet sheet = workbook.getSheetAt(sheetIndex);//获取第x页签
int rowNumber=sheet.getLastRowNum();
for (int rowIndex = 1;rowIndex<=rowNumber;rowIndex++)//跳过表头
{
String 收支类别 =ExcelHelpers.getCellStringValue(sheet,rowIndex,2);
double 金额 =ExcelHelpers.getCellDoubleValue(sheet,rowIndex,3);
if (!收支类别.equals("学费收入"))
{
continue;
}
else
{
if (sheetIndex==0)
{
one=one+金额;
}
else if (sheetIndex==1)
{
two=two+金额;
}
else if (sheetIndex==2)
{
three=three+金额;
}
else
{
System.out.println("没有的表");
}
}

}
}
XSSFWorkbook workbooks =ExcelHelpers.createXLSX();//创建xlsx
XSSFSheet sheet = workbooks.createSheet();//创建页签
XSSFChart chart = ExcelHelpers.createChart(sheet, 0, 5, 7, 26);//在sheet上创建一个图表对象,显示到左上角坐标为(coll,row)、右下角坐标为(col2,row2)这个位置
chart.setTitleText("每月收入波动图");
chart.getOrAddLegend().setPosition(LegendPosition.LEFT);

ChartFromArrayBuilder<Double> chartBuilder = new ChartFromArrayBuilder<>(ChartTypes.LINE);//设置显示的图像:折线图 3D图等
String[] monthNames = new String[]{"一月份","二月份","三月份"};
Double[] sales1 ={one,two,three};
chartBuilder.setCategoryNames(monthNames);//横坐标用哪个数组
chartBuilder.putValues("月份",sales1);
chartBuilder.build(chart);

ExcelHelpers.saveToFile(workbooks,"D:/JavaTest1/学费收入/1.xlsx");//保存文件
ExcelHelpers.close(workbooks);//关闭文件
ExcelHelpers.close(workbooks);
//DesktopHelpers.openFile("D:/JavaTest1/学费收入/1.xlsx");//用默认方式去打开文件
  • 1.上面这个代码是自己没有看大佬的视频时,写出来的.
  • 分析一下
    • 1.自己写的太固定了,不好换
    • 2.其他思路和大佬的都差不多
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//大佬写的
Workbook wb = ExcelHelpers.openFile("d:/公司账目2021年.xlsx");
int sheetCount = wb.getNumberOfSheets();
String[] monthNames = new String[sheetCount];//用来给波动图的指标
Double[] sales = new Double[sheetCount];//用来给波动图的数据
for(int sheetIndex = 0;sheetIndex<sheetCount;sheetIndex++)
{
Sheet sheet = wb.getSheetAt(sheetIndex);
String month = sheet.getSheetName();
monthNames[sheetIndex]=month;
double 学费总额=0;
for(int rowIndex =1;rowIndex<=sheet.getLastRowNum();rowIndex++)
{
String 收支类别 = ExcelHelpers.getCellStringValue(sheet,rowIndex,2);
//System.out.println(收支类别);
if(收支类别.equals("学费收入"))
{
double 金额= ExcelHelpers.getCellDoubleValue(sheet,rowIndex,3);
学费总额+=金额;
}
}
sales[sheetIndex] = 学费总额;
System.out.println(month+":"+学费总额);
}

XSSFWorkbook wbChart = ExcelHelpers.createXLSX();
XSSFSheet sheet = wbChart.createSheet();
XSSFChart chart = ExcelHelpers.createChart(sheet, 0, 0, 10, 20);
ChartFromArrayBuilder<Double> chartBuilder = new ChartFromArrayBuilder<>(ChartTypes.LINE);
chartBuilder.setCategoryNames(monthNames);
chartBuilder.putValues("学费收入",sales);
chartBuilder.build(chart);

ExcelHelpers.saveToFile(wbChart,"d:/学费波动.xlsx");
ExcelHelpers.close(wbChart);

ExcelHelpers.close(wb);


P4-15 案例:计算公司财务报表
http://example.com/2024/08/20/SE101-零基础玩Java/Part4-笔记/P4-15 案例:计算公司财务报表/
Author
John Doe
Posted on
August 20, 2024
Licensed under