本文描述了客户对星空财务报表平台导出Excel功能添加个性化批注的需求,该需求因系统不支持直接扩展而面临挑战。经过多方沟通和研究,最终采用开发Excel转换插件的替代方案实现,客户操作包括导出报表、上传至转换功能并下载带批注的报表。解决方案涉及配置批注数据生成规则、Excel转换功能的细化和数据处理等。此方案提升了客户满意度,并展示了在不可扩展平台下实现功能扩展的新方法。
一、业务背景
需求来自客户财务部汇报领导数据时产生,这个需求不是很大众化,但是对于系统功能的可扩展性是一个比较大的考验。
二、需求内容
客户想要在星空财务报表平台即:财务会计》报表》双击数据行》导出excel功能下实现导出内容添加个性化批注功能。并且批注内容来自不同的固定科目。
这个需求在我们系统是没有已经存在的功能进行配置,并且由于涉及到财务报表的开发,我们系统也是不支持二开财务报表。后面在经过多方确认和沟通,联系到总部那边反馈这个财务报表是集成的微软的office,是没法做扩展支持。
多方辗转研究,最后研究出一套替代方案。在客户同意的情况下得到实现。并且在以后的工作中客户在其他业务系统上多次请求添加此功能。
功能实现样式如下:
三、解决方案
1、实现方式描述:
1、在财务报表系统先用acct配置出批注计算的金额写入excel对应的单元格
2、客户通过财务报表系统导出对应的报表
3、我们这边开发一个excel转换插件,
4、客户将导出的excel,通过导入excel插件,转换成想要的批注形式下载下来
2、客户操作:
1、 客户先从财务报表系统导出需要的报表
2、 客户上传上面导出的报表到excel转换功能
3、 点击转换并下载按钮
实现的关键逻辑代码:
/// <summary>
/// 分析并设置每一行批注(利润表)
/// </summary>
/// <param name="sheet"></param>
/// <param name="drawing"></param>
/// <param name="maxCol">最大的列数</param>
/// <param name="setCommentRow">需要设置批注行</param>
/// <param name="staRow">起始行</param>
/// <param name="endRow">结束行</param>
public static void CalculationEveryRow(ISheet sheet, IDrawing drawing,int maxCol, int setCommentRow, int staRow, int endRow)
{
//循环原来的sheet行,给原来的sheet行赋值
IRow commentNameRow = sheet.GetRow(2);//利润中心行
IRow commentRow = sheet.GetRow(setCommentRow - 1);//获取需要赋值的行
for(int r=0;r< commentNameRow.Cells.Count; r++)
{
ICell commentNameCell = commentNameRow.Cells[r];//具体利润中心
if (commentNameCell != null)
{
string commentName = commentNameCell.ToString();//利润中心名称
if (commentName.Contains("编制单位"))
{
continue;
}
for (int t =2;t< commentRow.Cells.Count;t++)
{
ICell everycell = sheet.GetRow(2).GetCell(t);
if (everycell != null)
{
if (commentName.Equals(everycell.ToString()))//定位到每个利润中心对应的列
{
ICell lineNoCell = commentRow.GetCell(1);
string lineNo = lineNoCell.ToString();//序号
//根据对应序号和利润中心查找对应的批注信息并赋值
IComment comment1 = CalculationAmount(sheet, commentRow.GetCell(t), drawing, commentName, Convert.ToInt32(lineNo), 0, staRow, endRow);
IComment comment2 = CalculationAmount(sheet, commentRow.GetCell(t + 1), drawing, commentName, Convert.ToInt32(lineNo), 1, staRow, endRow);
if (comment1 != null)
{
commentRow.GetCell(t).CellComment = comment1;// 设置批注行本期金额
}
if (comment2 != null)
{
commentRow.GetCell(t + 1).CellComment = comment2;// 设置批注行累计金额
}
}
t = t + 1;
}
}
}
}
}
包含三张报表
1、 财务报表系统配置批注数据生成规则(这里有两条数据点无法配置)(此处用户可以配置,金蝶实施也可以配置)
2、 Excel 转换功能:
1、 导入功能Demo中已经完成基础部分,功能还需要细化
2、 下载功能Demo中已经完成基础部分,细化功能及数据处理还需要调整
3、 批注数据梳理写入
4、 两条无法配置的批注数据取数逻辑及数据导入
5、 重新定义表格样式功能(此处需要集成到金蝶云星空,需要测试重定义方式是否支持)
四、推广价值
客户对星空财务报表平台(集成微软office)功能扩展的一种新的解决方试,弥补因无法扩展星空财务扩展平台而项目流失。提升客户满意度。