本发明涉及电子文档处理技术领域,尤其涉及一种针对同文档的多用户同步编辑处理系统及处理方法。
背景技术:
目前各省的电网公司每年都要针对本省多个电力部门实行统一信息统计,通过数据来评价这一年度的工作及成果。以云南电网公司为例,目前云南收资表文档繁多,汇总时间较长。云南电力调度控制中心以往每次收资信息的上报一般采取两种方式:一、所有需填写文档的用户顺序下载收资表文档、编辑、上传,耗费时间太久且彼此信息公开,无法确保重要信息安全;二、所有需填写文档的用户下载收资表文档,填写后上传,由收资表管理人员统一汇总,工作量大且易出错。为此亟待需要通用信息上报系统来简化流程、减少工作量,缩短上报时间,提高信息安全性。
技术实现要素:
针对现有技术存在的不足,本发明所要解决的技术问题是,提供一种针对同文档的多用户同步编辑处理系统及处理方法。
为解决上述技术问题,本发明所采取的技术方案是:一种针对同文档的多用户同步编辑处理系统,包括如下部分:
(一)、数据文件自动解析
(1)、在应用服务器内搭建oricale数据库,使用iis应用服务器,.netframework4.0作为运行环境;
(2)、采用.net编写程序,使用devexpress控件展示文件内容,按照文档中第一列合并的单元格识别数据文件名称,启动相应线程对一个模板文件拆分解析成多个子文件,结束后销毁线程;
(二)、多用户同时在线编辑文档
通过为不同用户分配拆分后文件的权限,支持所有用户同时在线编辑文件内容并提交。
(1)、根据权限登录系统,授权登录用户登录后查看自己的文档;
(2)、对自己的文档进行编辑操作,操作完成后上传,用户结束当前状态,管理员可通过状态得知授权用户完成操作,从而进行合并数据,每个子文档状态可实时预览;
(三)、文档内容的合并下载
采用跟踪多文档提交状态,合并成一个文档并完整保留不同用户编辑的内容,采用浏览器的内核进行数据交互,以客户端模式,展示内容信息,下载查看。
上述的针对同文档的多用户同步编辑处理系统,多用户同时在线编辑文档部分中,文件解析成多个子文件,用户上传文件后,每个文档为初始化状态,当用户在线编辑完成后,可修改状态为已完成状态,代表该用户已经将文档修改完成。
上述的针对同文档的多用户同步编辑处理系统,多用户同时在线编辑文档部分中,将每个子文件为不同的用户赋权限,用户上传文件初始为管理员可以编辑操作,普通用户无权操作文件,普通用户需要通过管理员赋予文档授予给用户的权限,用户拥有可进行编辑文档信息的权限。
一种针对同文档的多用户同步编辑处理方法,包括如下步骤:
(一)、对数据文件自动解析,通过一个模板文件拆分解析成头文件相同的多个小文件;解析过程:
(1)按照设置的头部范围取出头部数据。
1、读取原文档到内存,记为worksheet1,加载文档第一个sheet,获取出第一个sheet所有列的集合;
2、查询数据库配置的excel信息,取出开始头行数和结束头行数;
(2)按excel首列合并单元格取出合并范围,进行拆分内容;
1、根据所有列的集合获取出有合并过单元格的列集合;
2、循环取列集合,取出符合条件的数据;条件:是合并的列,并且是单元格第一列的数据。放到map集合中数据格式如:a11:a16代表合并数据范围;
3、遍历map集合,每次取出1个符合条件的合并列,新创建一个内存,记为newworksheet,对象放临时数据,sheet名称设置为原文档名称,取出map集合范围值,拆分范围字符串a11:a16得到开始行数为11,结束行数为16,遍历过程中判断结束行数是否小于等于结束头行数,否则跳出本次遍历;
(3)将拆出头部数据和内容合并到新excel;
1、取出头部范围:按照取出开始头行数及结束头行数循环数据,将内存对象worksheet1的当前行数复制到newworksheet当前行数,取出内容范围:按照获取的开始内容行数及结束内容行数循环数据,将内存对象worksheet1的当前行数复制到newworksheet当前行数,合并excel内容项第一列的单元格;
2、输出内容,获取当前合并列的内容当做文件名称,保存文件到指定路径,文件名按照当前时间戳命名,对切出的文档进行保存数据库操作;
3、重复执行遍历map操作;
(二)、多用户同时在线编辑文档,通过为不同用户分配拆分后文件的权限,支持所有用户同时在线编辑文件内容并提交;
(三)、文档内容的合并下载,跟踪多文档提交状态,合并成一个文档并完整保留不同用户编辑的内容,下载查看;子文件合并过程为:
(1)取出第一个文档所有内容
1、按照文档id取出拆分后文档数据地址;
2、创建内存对象存放临时excel记为worksheet,循环查询出的数据地址内容,得到文件真实路径地址以及开始头行数、结束头行数;
3、按照文档地址加载文档到内存中,记为新ws,第一次循环时,取第一个sheet并且按行取出文档所有内容,将ws数据复制到worksheet中,记录ws最后一行的索引值;
(2)从第二文档开始移除头部数据,合并到新文档中;
第二次循环,以结束头部行数为开始,文档结束内容行数为终止。遍历循环文档内容部分,将ws数据复制到worksheet中;
(3)导出文档数据;
1、重复执行循环操作,将每个子文档地址内容添加到worksheet中,取出文件名称,将worksheet内容写入到指定路径中,并保存文件,文件名为原文的名称;
2、将生成出的文件转为文件流进行下载。
本发明针对同文档的多用户同步编辑处理系统及处理方法的优点是:本发明方法通过为不同用户分配拆分后文件的权限,支持所有用户同时在线编辑文件内容并提交。采用跟踪多文档提交状态,合并成一个文档并完整保留不同用户编辑的内容,采用浏览器的内核进行数据交互,以客户端模式,展示内容信息,下载查看。耗费时间少,不但能够实现多终端同步编辑,而且各终端的表格内容仅编辑的用户能够查看,确保了重要信息安全;实现了任意同步或不同步的填写后上传,收资表管理人员统一合并,工作量大大降低且不易出错。该系统来简化流程、减少工作量,缩短上报时间,提高信息安全性。
具体实施方式
下面结合具体实施例对本发明做进一步详细说明;
一种针对同文档的多用户同步编辑处理系统及处理方法,该方法包括:数据文件自动解析、多用户同时在线编辑文档、文档内容的合并下载。
1、数据文件自动解析
本方法采用.net编写程序,使用devexpress控件展示文件内容,按照文档中第一列合并的单元格识别数据文件名称,启动相应线程进行解析成多个子文件,结束后销毁线程。
本方法在应用服务器内搭建oricale数据库,使用iis应用服务器,.netframework4.0作为运行环境;
解析过程:
(4)按照设置的头部范围取出头部数据。
1.读取原文档到内存(记为worksheet1),加载文档第一个sheet,获取出第一个sheet所有列的集合
2.查询数据库配置的excel信息,取出开始头行数和结束头行数。
(5)按excel首列合并单元格取出合并范围,进行拆分内容。
1.根据所有列的集合获取出有合并过单元格的列集合
2.循环取列集合,取出符合条件的数据。条件:是合并的列,并且是单元格第一列的数据。放到map集合中数据格式如:a11:a16代表合并数据范围。
3.遍历map集合,每次取出1个符合条件的合并列。新创建一个内存(记为newworksheet)对象放临时数据,sheet名称设置为原文档名称。取出map集合范围值,拆分范围字符串a11:a16得到开始行数为11,结束行数为16。遍历过程中判断结束行数是否小于等于结束头行数,否则跳出本次遍历。
(6)将拆出头部数据和内容合并到新excel。
1.取出头部范围:按照取出开始头行数及结束头行数循环数据。将内存对象worksheet1的当前行数复制到newworksheet当前行数。
算法:
取出内容范围:按照获取的开始内容行数及结束内容行数循环数据。将内存对象worksheet1的当前行数复制到newworksheet当前行数。
算法:
合并excel内容项第一列的单元格。
2.输出内容,获取当前合并列的内容当做文件名称,保存文件到指定路径,文件名按照当前时间戳命名。对切出的文档进行保存数据库操作。
3.重复执行遍历map操作。
2、多用户同时在线编辑文档
本发明方法通过为不同用户分配拆分后文件的权限,支持所有用户同时在线编辑文件内容并提交。
(1)文件解析成多个子文件。用户上传文件后,每个文档为初始化状态。当用户在线编辑完成后,可修改状态为已完成状态。代表该用户已经将文档修改完成。
(2)将每个子文件为不同的用户赋权限。用户上传文件初始为管理员可以编辑操作,普通用户无权操作文件。普通用户需要通过管理员赋予文档授予给用户的权限。用户拥有权限可进行编辑文档信息
(3)根据权限登录系统编辑文件并提交。
授权登录用户登录后查看自己的文档,并进行编辑操作。操作完成后,用户结束当前状态。管理员可通过状态得知授权用户完成操作,从而进行合并数据。每个子文档状态可实时预览。
3、文档内容的合并下载
本发明采用跟踪多文档提交状态,合并成一个文档并完整保留不同用户编辑的内容,采用浏览器的内核进行数据交互,以客户端模式,展示内容信息,下载查看。
子文件合并过程
(4)取出第一个文档所有内容
1.按照文档id取出拆分后文档数据地址。
2.创建内存对象存放临时excel记为worksheet。循环查询出的数据地址内容,得到文件真实路径地址以及开始头行数、结束头行数。
3.按照文档地址加载文档到内存中,记为新ws。第一次循环时,取第一个sheet并且按行取出文档所有内容。将ws数据复制到worksheet中。记录ws最后一行的索引值。
具体算法实现:
(5)从第二文档开始移除头部数据,合并到新文档中
1.第二次循环,以结束头部行数为开始,文档结束内容行数为终止。遍历循环文档内容部分。将ws数据复制到worksheet中。
具体算法实现:
(6)导出文档数据。
1.重复执行循环操作,将每个子文档地址内容添加到worksheet中。取出文件名称,将worksheet内容写入到指定路径中,并保存文件,文件名为原文的名称。
2.将生成出的文件转为文件流进行下载。
当然,上述说明并非是对本发明的限制,本发明也并不限于上述举例,本技术领域的普通技术人员,在本发明的实质范围内,作出的变化、改型、添加或替换,都应属于本发明的保护范围。