luckysheet在react中的使用

export function EditQualityPlanInfo({}: any) {
const [mineSheet, setMineSheet] = useState<any>(null)
	const [init, setInit] = useState<any>(true)
	const [data, setData] = useState<any>([
		{
			name: "Sheet1",
			row: 20,
			column: 16,
			"index": 0, //工作表索引
			"status": 1, //激活状态
			"order": 0, //工作表的下标
			"hide": 0,//是否隐藏
			defaultRowHeight: 60,
			celldata: [{
				"r": 0,
				"c": 0,
				"v": {
					ct: {fa: "General", t: "g"},
					m:"LOGO名称",
					v:"LOGO名称",
					"mc": { //合并单元格必备属性
						"r": 0, //主单元格的行号
						"c": 0, //主单元格的列号
						"rs": 3, //合并单元格占的行数
						"cs": 6 //合并单元格占的列数
					},
					ht: 0,
					tb: '2',
				}
			}, {
				"r": 0,
				"c": 6,
				"v": {
					ct: {fa: "@", t: "s"},
					m:"质量控制计划编 \r\n Quality Control Plan No.",
					v:"质量控制计划编 \r\n Quality Control Plan No.",
					"mc": { //合并单元格必备属性
						"r": 0, //主单元格的行号
						"c": 6, //主单元格的列号
						"cs": 3, //合并单元格占的列数
						"rs": 1, //合并单元格占的行数
					},
					ht: 0,
					vt: 0,
					tb: '2',
				},
			}, {
				"r": 0,
				"c": 9,
				"v": {
					ct: {fa: "@", t: "s"},
					m:"质量控制计划编号 \r\n Quality Control Plan No.",
					v:"质量控制计划编号 \r\n Quality Control Plan No.",
					"mc": { //合并单元格必备属性
						"r": 0, //主单元格的行号
						"c": 9, //主单元格的列号
						"cs": 3, //合并单元格占的列数
						"rs": 1, //合并单元格占的行数
					},
					ht: 0,
					vt: 0,
					tb: '2',
				},
			}, {
				"r": 1,
				"c": 9,
				"v": {
					ct: {fa: "@", t: "s"},
					m:"质量控制计划编号 \r\n Quality Control Plan No.",
					v:"质量控制计划编号 \r\n Quality Control Plan No.",
					"mc": { //合并单元格必备属性
						"r": 1, //主单元格的行号
						"c": 9, //主单元格的列号
						"cs": 3, //合并单元格占的列数
						"rs": 1, //合并单元格占的行数
					},
					ht: 0,
					vt: 0,
					tb: '2',
				},
			}, {
				"r": 1,
				"c": 6,
				"v": {
					ct: {fa: "@", t: "s"},
					m:"质量控制计划编号 \r\n Quality Control Plan No.",
					v:"质量控制计划编号 \r\n Quality Control Plan No.",
					"mc": { //合并单元格必备属性
						"r": 1, //主单元格的行号
						"c": 6, //主单元格的列号
						"cs": 3, //合并单元格占的列数
						"rs": 2, //合并单元格占的行数
					},
					ht: 0,
					vt: 0,
					tb: '2',
				},
			}, {
				"r": 3,
				"c": 8,
				"v": {
					ct: {fa: "@", t: "s"},
					m:"质量控制计划编号 \r\n Quality Control Plan No.",
					v:"质量控制计划编号 \r\n Quality Control Plan No.",
					"mc": { //合并单元格必备属性
						"r": 3, //主单元格的行号
						"c": 8, //主单元格的列号
						"cs": 2, //合并单元格占的列数
						"rs": 3, //合并单元格占的行数
					},
					ht: 0,
					vt: 0,
					tb: '2',
				},
			}],

		},
		{
			name: "Sheet2",
			row: 20,
			column: 16,
			defaultRowHeight: 60,
			"index": 1, //工作表索引
			"status": 0, //激活状态
			"order": 1,
			celldata: [{
				"r": 0,
				"c": 0,
				"v": {
					ct: {fa: "General", t: "g"},
					m:"LOGO名称",
					v:"LOGO名称",
					"mc": { //合并单元格必备属性
						"r": 0, //主单元格的行号
						"c": 0, //主单元格的列号
						"rs": 3, //合并单元格占的行数
						"cs": 6 //合并单元格占的列数
					}
				},
				ht: 0,
				tb: '2',
			}, {
				"r": 0,
				"c": 6,
				"v": {
					ct: {fa: "@", t: "s"},
					m:"质量控制计划编号 \r\n Quality Control Plan No.",
					v:"质量控制计划编号 \r\n Quality Control Plan No.",
					"mc": { //合并单元格必备属性
						"r": 0, //主单元格的行号
						"c": 6, //主单元格的列号
						"cs": 3, //合并单元格占的列数
						"rs": 1, //合并单元格占的行数
					},
					ht: 0,
					vt: 0,
					tb: '2',
				},
			}, {
				"r": 0,
				"c": 9,
				"v": {
					ct: {fa: "@", t: "s"},
					m:"质量控制计划编号 \r\n Quality Control Plan No.",
					v:"质量控制计划编号 \r\n Quality Control Plan No.",
					"mc": { //合并单元格必备属性
						"r": 0, //主单元格的行号
						"c": 9, //主单元格的列号
						"cs": 3, //合并单元格占的列数
						"rs": 1, //合并单元格占的行数
					},
					ht: 0,
					vt: 0,
					tb: '2',
				},
			}],

		}])

	useEffect(() => {
		// @ts-ignore
		const luckysheet = window?.luckysheet
		if (luckysheet && needExcel) {
			luckysheet.create({
				container: "luckysheet",
				showinfobar: false,
				enableAddBackTop: false,
				enableAddRow: false,
				lang: 'zh',
				data,
				hook: {
					// 表格创建之后触发
					workbookCreateAfter:function(allConfig){
						luckysheet.find("\n").forEach(({ row, column }, index, arr) => {
							luckysheet.setRangeShow({ row:[row], column:[column] }, {
								success: () => {
									// 进入编辑模式,让换行生效
									luckysheet.enterEditMode({
										success: () => {
											// 退出编辑模式
											luckysheet.exitEditMode();

											if (index === arr.length - 1) {
												luckysheet.setRangeShow({row: [0], column: [0]}, {
													show: false, // 选中状态不要高亮
												})
											}
										}
									});
								}
							})
						});
						setInit(false)
					},
					sheetActivate: function (index) {
						const newData = data?.map(item => {
							return {
								...item,
								status: item.index == index ? 1 : 0
							}
						})
						setData(newData)
					},
				}
			});
			setMineSheet(luckysheet)
		}
	}, [])
	useEffect(() => {
		if (mineSheet && mineSheet.refresh && !init && needExcel) {
			mineSheet && mineSheet.refresh({
			 success: ()=> {
				 mineSheet.find("\n").forEach(({ row, column }, index, arr) => {
					 mineSheet && mineSheet.setRangeShow({ row:[row], column:[column] }, {
						 success: () => {
							 // 进入编辑模式,让换行生效
							 mineSheet.enterEditMode({
								 success: () => {
										 // 退出编辑模式
										 mineSheet.exitEditMode();

									 if (index === arr.length - 1) {
										 // 选中第一个格子
										 mineSheet.setRangeShow({ row:[0], column:[0] }, {
											 show: false, // 选中状态不要高亮
										 })
									 }
								 }
							 });
						 }
					 })
					})
			 }
		})
		}
	}, [data])

	return  <div id="luckysheet" style={{
		width: '100%',
		height: `${16 * 4 * 20 + 100}px`,
	}} ></div>
}

luckcysheet在静态资源文件夹中放入,并在index.html中引用:
在这里插入图片描述

### 回答1: React Luckysheet 是一个基于 React 框架开发的一款在线表格编辑工具。它是基于著名的在线表格插件 Luckysheet 进行二次开发,以便在 React 项目中使用React Luckysheet 具有众多强大的功能和特点。首先,它提供了丰富的表格编辑功能。用户可以在表格中进行文本输入、数字计算、公式应用等操作,以便对数据进行处理和分析。同时,该工具还支持多选、拖拽、复制等快捷操作,提升了用户的使用体验。 其次,React Luckysheet 还具有强大的数据分析功能。用户可以使用内置的函数和公式对表格中的数据进行计算,比如求和、平均值、最大值等等。这个工具还支持数据排序、筛选和分组,使得数据分析更加方便和高效。 此外,React Luckysheet 还具备可视化配置能力。它提供了丰富的样式和格式选项,用户可以自定义表格的外观,如颜色、字体、边框等等。同时,该工具还支持数据的图表展示,用户可以通过图表直观地展示数据分析结果。 最后,React Luckysheet 还支持与其他组件的集成。它可以与其他 React 组件无缝结合,以便在 React 项目中进行更复杂的数据处理和展示操作。这为开发者提供了更大的灵活性和便利性。 总之,React Luckysheet 是一个功能强大的在线表格编辑工具,它在 React 应用中能够提供丰富的表格编辑、数据分析和可视化配置功能。它的使用能够提升用户的工作效率和数据处理能力。 ### 回答2: React Luckysheet是一个基于React框架开发的在线电子表格组件。Luckysheet是一款国产的开源在线电子表格前端模块,具有功能强大,性能优越的特点。React Luckysheet在此基础上进行了封装和整合,提供了基于React的易用性和灵活性。 React Luckysheet具有以下几个主要特点: 1. 强大的功能:React Luckysheet提供了丰富的电子表格功能,包括公式计算、数据格式化、数据排序、筛选、图表展示等。用户可以轻松完成各种复杂的数据处理和计算任务。 2. 优秀的性能:React Luckysheet采用了高性能的前端渲染技术,能够处理大型数据表格,并且具有卓越的响应速度和流畅的用户体验。 3. 可定制化:React Luckysheet提供了丰富的API和组件,可以根据项目需求进行定制开发。用户可以根据自己的需求进行布局和样式的调整,以及添加自定义的功能。 4. 良好的兼容性:React Luckysheet可以在各种浏览器和移动设备上正常运行,包括Chrome、Firefox、Safari等。并且还支持导入和导出Excel文件,与其他常见的电子表格工具进行无缝对接。 总之,React Luckysheet是一个功能强大、性能优越且易用的在线电子表格组件,适用于各种数据处理和计算任务。它的特点是强大的功能、优秀的性能、可定制化和良好的兼容性。通过使用React Luckysheet,可以有效提高开发效率和用户体验,帮助开发者轻松实现复杂的数据处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值