首页 > 系统相关 >国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版实现前端框架内置对话框在Word中填空填表

国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版实现前端框架内置对话框在Word中填空填表

时间:2024-09-20 10:47:36浏览次数:7  
标签:pageofficectrl Word 表格 对话框 word 用户 国产 填空 填写

PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(LoogArch)芯片架构。

本示例关键代码的编写位置
Vue+Springboot

注意
本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。

不管是政府机关、公司企业,还是金融行业、教育行业等单位,在办公过程中都经常需要填写各种文书和表格,比如通知、报告、登记表、计划表、申请表等。这些文书和表格往往是用Word文件制作的模板,比方说一个通知模板中经常会有“关于_______的通知”这样的文字,发布一个新通知时,让起草人员在通知模板的空白处填写。并且此类文件中还经常使用“□”字符作为复选框以供用户勾选,比如填写人员性别信息时的“□男 □女”,或者合同中付款方式的选项“□现金 □对公转账”等。然而,在Web办公系统中,用户在线填写这类Word文件时却遇到了诸多不便,“□”字符无法进行勾选操作,而改用Word自身的复选框内容控件不仅外观不佳,操作也不便,而且其选中状态是在方块中打叉,这与用户习惯的在方块中打钩不符,无法准确表达用户意图。更糟糕的是,用户在线填写信息后,系统无法自动提取这些信息,使得Web线上办公面临重大挑战。

再就是填写Word表格的问题,尽管Word作为文档编辑的标准工具,其表格设计功能强大,而且使用传统的Word表格填写方式,直接在Word文档内输入信息最直观易懂,最符合用户工作惯例,但是在Web办公系统中,让用户直接使用在线编辑Word文件填写表格的方式存在很大的问题。如果用户输入的操作不规范,或者用户录入的数据不规范,就有可能破坏表格的样式,对Word模板的破坏往往是不被允许的,至少有一个原因就是改变了模板的样式直接会破坏正式文件的打印效果。

填写Word表格的另一个问题就是难以收集用户填写的数据,用户直接在Word表格中输入数据被视为文档内容的一部分,填写的信息数据如同孤岛,没有直接的方法通过编程或其他自动化手段轻松地提取,难以被系统做进一步的数据自动化处理,如果不用手动复制粘贴的方式把数据二次录入到Web办公系统的话,就只能通过更复杂的文本解析技术勉强应对这一挑战。这就是传统Word中填写表格的局限性,限制了办公效率的进一步提升,特别是对于需要大量数据录入和分析的场景,这种手工操作不仅耗时费力,还容易出错。如果利用Word文档其内置的控件功能设计填报表格,比如制作简单如调查问卷或申请表单。然而,其本质并非专为数据处理设计,在Word中利用复选框等控件收集的数据难以直接以CSV或XML等结构化格式导出,导致后续数据分析需依赖额外工具,此过程繁琐且易出差错。尽管Word具备VBA编程能力,可定制宏以自动处理数据读取等任务,但这要求较高的技术门槛且实施复杂。此外,Word的表单控件在美学设计与功能自定义上略显不足,与现代Web界面相比缺乏交互性和动态性。还有Word中的下拉菜单数据无法与外部系统实时同步,复选框的显示可能不是勾而是叉,Word用户还可能遭遇控件不显示、版本兼容性问题及设计模式操作复杂等挑战。

针对上述问题,PageOffice V6.3版本的客户端控件新增Enabled属性,对采用标准div技术实现的界面元素,如模态对话框、弹出菜单及下拉选择框给予了更佳的支持,彻底解决了自浏览器诞生以来的各种文档控件、Office控件、Office插件必定遮挡界面元素的技术问题,因此提供了一种全新的Word文书和表格填写解决方案,利用现代Web前端中基于div技术的模态框,结合PageOffice操作文档中数据区域的接口来优化文书和表格的填写流程。div模态框是各种前端框架使用div制作的覆盖在当前页面之上的对话框,可以承载任何形式的HTML内容,包括form表单,这样一来,当用户需要填写Word表格时,可以触发一个精心设计的对话框,其中包含与Word表格项完全匹配的HTML表单,每个表单项与Word表格中的数据区域一一对应,这包括文本输入框、下拉选择、以及复选框等元素,用户在这个交互友好的环境中填写信息,体验更加流畅。用户在对话框中填写完毕后,前端脚本负责收集这些数据做自动化处理或保存到数据库,并通过PageOffice提供的API接口,将数据精确地填充到Word文档的对应的数据区域所在位置,完成对Word文件的同步填写工作。

采用前端框架内置对话框填写文书和表格的方案,不仅解决了数据收集与处理的难题,极大地提升了用户操作的便捷性和效率,而且完全保留了传统Word填写最直观易懂的优点,完美解决了用户在线填写文书和表格的问题。下面是一个简单的示例,演示了如何使用前端框架内置对话框填写一个“完税证明申请表”的效果。

  1. 在线打开一个“完税证明申请表”的Word表格,如下图所示:
    image

  2. 点击文件中的文字“点此填写表格”,弹出前端框架内置模态框窗口,填写个人信息,如下图所示:
    image

  3. 填写完毕,点击确定按钮,调用PageOffice接口填充数据到Word表格中,效果如下图所示:
    image

如上面示例所示,前端框架内置模态框窗口结合PageOffice提供的API接口实现了Word表格的在线填写,即提供了Word表格在线填写的便捷性,又保留了用户原有的Word表格填写习惯和效果,极大的减少了Web系统上线后对用户的培训工作和用户的学习成本,也降低了Web系统的上线难度,同时完成了对Word表格数据收集和数据处理自动化,大大提高了办公效率。如果实际使用过程中,在业务逻辑不变化的情况下需要对word表格的样式作出调整,那么客户可以自己在线打开Word模板重新定义表格的样式,而无需进行再次开发,不但让用户有了自己的自由度,而且也使得Web系统的适用性更强。

综上所述,使用本文提供的技术方案可以做到用户填写的表单数据、Word文件中填写的内容和数据库存储的数据都实时同步的效果。这样一来,不但实现了规范用户输入的目的,而且实现了用户填写数据与打印输出完全一致的所见即所得的效果,还有就是完全避免了在服务器端通过程序读写Word文件的传统操作。由于Word文件自身格式的复杂性,所以目前没有那种技术可以从word文件中读取百分之百正确的数据,如果采用先填写并保存Word文件,然后通过服务器端代码(比如POI技术等)从word中读取用户填写数据再保存数据库的方案,就一定会存在word文件和数据库中数据不一致的问题。所以采用此方案可以保证填写表格的web页面、word文件以及数据库数据的完全同步,同时,采用此方案后也再不需要任何对word文件做动态数据填充的技术了。这样一来,不但可以极大的缩短项目开发周期,降低开发的难度和成本,而且也使得程序的稳定性有了更好的保证。

前端代码
个人信息对话框的HTML代码如下:

		<el-dialog title="填写个人信息" :visible.sync="dialogFormVisible1" @closed="closeDialog()">
			<el-form :model="form1" :rules="rules1" ref="form">
				<el-form-item label="姓名" :label-width="formLabelWidth" prop="name">
					<el-input v-model="form1.name" autocomplete="off"></el-input>
				</el-form-item>
				<el-form-item label="性别" :label-width="formLabelWidth">
					<el-radio-group v-model="form1.gender">
						<el-radio label="男">男</el-radio>
						<el-radio label="女">女</el-radio>
					</el-radio-group>
				</el-form-item>
				<el-form-item label="年龄" :label-width="formLabelWidth">
					<el-input-number v-model="form1.age" :min="1" :max="150"></el-input-number>
				</el-form-item>
				<el-form-item label="国籍" :label-width="formLabelWidth">
					<el-select v-model="form1.nationality" placeholder="请选择国籍">
						<el-option label="中国" value="中国"></el-option>
						<el-option label="美国" value="美国"></el-option>
						<!-- 其他国籍选项 -->
					</el-select>
				</el-form-item>
				<el-form-item label="证件类型" :label-width="formLabelWidth">
					<el-select v-model="form1.documentType" placeholder="请选择证件类型">
						<el-option label="身份证" value="身份证"></el-option>
						<el-option label="护照" value="护照"></el-option>
						<!-- 其他证件类型选项 -->
					</el-select>
				</el-form-item>
				<el-form-item label="证件号" :label-width="formLabelWidth">
					<el-input v-model="form1.documentNumber" autocomplete="off"></el-input>
				</el-form-item>
				<el-form-item label="申请理由" :label-width="formLabelWidth">
					<el-input type="textarea" v-model="form1.reason"></el-input>
				</el-form-item>
			</el-form>
			<div slot="footer" class="dialog-footer">
				<el-button @click="cacel1()">取 消</el-button>
				<el-button type="primary" @click="confirm1()">确 定</el-button>
			</div>
		</el-dialog>

相关JS代码如下:

import request from '@/utils/request'
export default {
	data() {
		return {
			poHtmlCode: '',
			dialogFormVisible1: false,
			form1: {
				name: '',
				gender: '',
				age: 18,
				nationality: '',
				documentType: '',
				documentNumber: '',
				reason: ''
			},
			rules1: {
				name: [
					{ required: true, message: '请输入姓名', trigger: 'blur' }
				]
			},
			formLabelWidth: '120px',
		}
	},
	created: function () {
		// 请求后端打开文件
		this.openFile().then(response => {
			this.poHtmlCode = response;
		});
	},
	methods: {
		OnPageOfficeCtrlInit() {
			// PageOffice的初始化事件回调函数,您可以在这里添加自定义按钮
		},
		openFile() {
			return request({
				url: '/ApplicationForm/Word',
				method: 'get',
			})
		},
		openDialog1() {
			pageofficectrl.Enabled = false;
			this.dialogFormVisible1 = true;
		},
		cacel1() {
			pageofficectrl.Enabled = true;
			this.dialogFormVisible1 = false;
		},
		closeDialog(){
            pageofficectrl.Enabled = true;
		},
		confirm1() {
			pageofficectrl.Enabled = true;
			this.dialogFormVisible1 = false;
			//将form表单的值回填到word中
			pageofficectrl.word.SetValueToDataRegion('PO_PersonName', this.form1.name);
			if ('男' == this.form1.gender) {
				pageofficectrl.word.SetValueToDataRegion('PO_PersonGender', '☑男 □女');
			} else {
				pageofficectrl.word.SetValueToDataRegion('PO_PersonGender', '□男 ☑女');
			}
			pageofficectrl.word.SetValueToDataRegion('PO_PersonAge', this.form1.age.toString());
			pageofficectrl.word.SetValueToDataRegion('PO_PersonNation', this.form1.nationality);
			pageofficectrl.word.SetValueToDataRegion('PO_PersonIDType', this.form1.documentType);
			pageofficectrl.word.SetValueToDataRegion('PO_PersonID', this.form1.documentNumber);
			pageofficectrl.word.SetValueToDataRegion('PO_PersonReason', this.form1.reason);
		},

		//OnWordDataRegionClick为PageOffice内置回调函数,只要写上其对应名称和参数,就会自动触发
		OnWordDataRegionClick(Name,Value) {
			if (Name == "PO_Edit") {
				this.openDialog1();
			}
		}
	},
	mounted: function () {
		//将当前页面methods中定义的函数挂载到PageOffice控件,例如控件触发的事件、自定义按钮触发的函数。
		window.POPageMounted = this;//此行必须
	}
}

参考链接:用前端框架内置对话框在Word中填空填表

标签:pageofficectrl,Word,表格,对话框,word,用户,国产,填空,填写
From: https://www.cnblogs.com/qq742655/p/18422012

相关文章

  • 在线CAD中实现测量圆、测量面积的方法(纯国产CAD)
    一、前言本章将介绍如何利用mxcad插件实现在CAD图纸中测量圆和测量面积的功能,用户点击目标圆对象将自动标记出这个圆的半径、面积值和周长值,同时可以自定义选择标注文字的位置,测量圆功能能够快速掌握目标圆对象的数据信息,方便统计工程量。测量面积功能(多边形、矩形)以多边形的每一......
  • 国产数据库VastBase适配指南
     背景  目前数据库市场上,仍然是甲骨文、IBM为代表的国外数据库软件处于主导地位,国产化的数据库的使用率,与推广面很有限。相对于主流数据库而言,国产数据库的优势并不明显,还有相当远的距离。那么我们为什么要用国产数据库呢?因为数据安全。相对于其它新特性而言,安全尤为重要。数......
  • Excel 国产化替换新方案
    前言在当前数字化转型和信创(信息技术应用创新)战略背景下,企业对于安全性、自主可控性和高效办公工具的需求日益增加。作为一款国产自主研发的高性能表格控件,SpreadJS正成为替换Excel的最佳选择。它不仅全面支持国产化认证,还在多功能、跨平台适配、灵活定制、对接AI大模型等方面......
  • 国产RAID卡2230-10i windows&Linux操作系统安装指导
    环境准备:1.准备2个U盘。一个刻录系统,一个装载驱动2.需保持CSM为UEFI状态和PCIEDEVICESLIST 下2230-10i的卡为UEFI状态,如图:环境排查:由于......
  • 领导换车,厂里上PLM——选车难,选国产PLM更难
    雷总选车我遭罪,苦也!9月的第一场雨还没停,领导雷总就拉着我念叨周末去看车的事儿。雷总今年34,就是宿迁本地人,毕业回家找工作进了我们厂,从基层绘图员一路干到了研发经理——不大不小算个官儿,手底下大猫小猫三四只。前两年经济不好加房地产下行,差点把我们这些做工程机械的厂子干垮,几个......
  • MySQL 扛不住了,来试试这款平替的“国产化改造”必入手的国产数据库吧!
    作者:Billmay表妹随着数字化转型的加速,企业对数据库的拓展性及高可用提出更高的要求。传统的集中式关系型数据库MySQL凭借多样化的功能以及开源多样化生态,获得国内数据库市场业务开发、运维等用户的高度认可。但随着经济迅猛发展,业务数据呈现“井喷”式增速,同时伴随着数据安全及......
  • OM6626低功耗国产蓝牙芯片对比进口NORDIC系列NRF52810/NRF52832
    OM6626是一款超低功耗的蓝牙soc主要特性:支持BLE5.3支持SIGMesh支持2.4G长包主频64Mhz,80KBRAM主要应用在esl电子价签,IoT模组、CGM、高报告率HID设备PUM特点1.71~3.6v供电电压1秒间隔广播平均电流:9uA;1秒间隔连接平均电流:7uA峰值电流:TX@0dB:4mA,RX@1Mbps:3mABLE特点支......
  • 南大通用GBase数据库在江西移动网管系统的国产化替换项目
    项目概况1、项目背景移动网管业务是为了更好地调配和管理网络资源及信息、对网络运行情况进行实时监测并根据业务情况以及网络流量使用情况进行网络资源的合理调配。随着江西移动业务的不断发展,网管系统处理负荷不断增加,系统使用的国外数据库产品版本老旧,系统运行过程中多次遇到数......
  • 一文读懂|为什么TAPD是国产研发协作平台的理想之选?
    在快速变化的数字化时代,高效的团队协作与敏捷的研发管理成为了企业创新和竞争力的关键。TAPD,作为腾讯旗下的一款旗舰级研发协作平台,凭借其深厚的技术底蕴和前瞻性的产品设计,正逐渐成为国内企业寻求升级研发流程、提升团队效能的理想选择。本文将深入探讨TAPD为何能成为国产研发......
  • 转载:国产操作系统麒麟v10、UOS在线打开excel文件并动态赋值
    在实际的开发过程中,经常会遇到数据库中的数据填充到excel生成一份正式文件的功能,PageOffice客户端控件支持在线预览Excel文件时,通过Workbook对象来实现对Excel文件的数据填充功能,如果只是简单的填充一下数据,那么通过调用Sheet对象的openCell方法获取到Cell对象并赋值即可Java......