dream-num / luckysheetserver Goto Github PK
View Code? Open in Web Editor NEWLuckysheet java backend
License: Apache License 2.0
Luckysheet java backend
License: Apache License 2.0
使用luckyexcel读取1万行的excel巨慢无比,要1分钟,有用java读取excel转成json返回给luckysheet展示的案例吗
服务端能不能增加将数据写入Excel的功能
版本情况:
前端:uckysheetv2.13
后台:最新main分支
luckysheet前后端部署后在协同模式下测试发现如下问题:
1、表格清除内容无效,清除后重新刷新页面数据还存在;
2、表格删除行,删除后重新刷新页面数据还是存在;
3、删除标签,标签同样存在
静态html存在跨域问题,
把跨域解决了吧
@bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedOrigin("");
config.setAllowCredentials(true);
config.addAllowedMethod("");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
return new CorsFilter(configSource);
}
项目启动的时候为啥要连接到mongodb数据库
描述错误
{ status: "0", msg: "Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: url not set", data: "{}", code: "SYS0" }
重现
重现错误的步骤:
1.本地启动LuckysheetServer,数据库客户端正常访问,application-dev.yml修改正确
2.http://127.0.0.1:9004/luckysheet/test/dbInit 报
{ status: "0", msg: "Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: url not set", data: "{}", code: "SYS0" }
期望的结果
http://127.0.0.1:9004/luckysheet/test/dbInit
能正常返回。
屏幕截图或演示
方便的话,贴上屏幕截图或在线链接复现问题,我们复测时会更精准
环境:
-操作系统:[Windows,Linux]
-浏览器 版本号:[例如 Chrome 版本 87.0.4147.105(正式版本) (64 位)]
-Luckysheet版本:[最新]
备注
其他说明
您的功能请求与问题有关吗?
LuckysheetServer对于各端之间通信使用的websocket长链接实现比较简单,只能在试验demo中使用,而且该部分实现与消息的合并代码耦合比较严重,使用者想使用自己的长链接通信实现修改起来比较复杂。
描述您想要的解决方案
可不可以将长链接通信部分抽离出来与消息的合并部分隔离开(比如模块化或者插件化),使用者可以很方便的将长链接通信部分替换成自己的实现(比如我们就是使用了自己的消息服务)。
其他内容
其他说明
您的功能请求与问题有关吗?
当前服务端按照配置的块大小(比如LuckysheetServer是硬编码成了500*500)将一个sheet划分成一个个块的集合(List),这个实现有效控制了DB中单行数据的规模,但是也带来一个问题:假设项目起初对于块大小的预估有误,导致后续的迭代中需要修改配置的块大小值,那么已经保存到DB中的数据的blockId值也需要同步进行清洗,否则CRUD会有错误。而通常情况下,已经保存的数据规模是比较大的,对全量的已保存数据进行清洗成本、风险都比较大。
描述您想要的解决方案
针对上述问题场景,是否有风险、成本更低的解决思路,而不需要清洗旧数据。
其他内容
想到的一种比较直接的思路是新增一个版本属性,它表示当前是使用的哪种块大小配置,后续就算修改了配置的块大小值也能在业务代码层面应对。
file: src\main\java\com\xc\luckysheet\entity\GridRecordDataModel.java {
......
/**
* sheet序号
*/
String index;
......
}
file: src\main\java\com\xc\luckysheet\db\server\JfGridUpdateService.java
private String Operation_sha(String gridKey, JSONObject bson) {
......
Integer _sheetPosition = JfGridFileUtil.getSheetPositionByIndex(_dbObject, index);
......
}
file: luckysheet-db\src\main\java\com\xc\luckysheet\util\JfGridFileUtil.java
public static Integer getSheetPositionByIndex(List _list,String index){
......
Integer _index=Integer.parseInt(_o.get("index").toString());
_o.get("index").toString() : "Sheet_0ekpfWe00zbx_1619100520312"
java.lang.NumberFormatException
......
}
Integer.parseInt() java.lang.NumberFormatException
What went wrong?
luckysheet-mysql\src\main\java\com\xc\luckysheet\mysql\impl\RecordSelectHandle.java
public JSONObject getCelldataByGridKey(String listId, String index, String blockId) {
............
String sql="select index
,json_data->>'$.celldata' AS celldata,json_data->>'$.column' AS column
,json_data->>'$.row' AS row
from "+JfGridConfigModel.TABLENAME+" p where p.list_id=? and p.index=? and p.block_id=? and p.is_delete=0 ORDER BY p.id DESC LIMIT 1 ";
Map<String, Object> map= luckySheetJdbcTemplate.queryForMap(sql, new Object[]{listId,index,blockId});
............
}
DataTable sheet [docssheet ] fields:id,block_id,row_col,index,list_id,status,order,json_data,is_delete
json_data : {"celldata": [{"c": 6, "r": 30, "v": {"m": "l", "v": "l", "ct": {"t": "g", "fa": "General"}}}]}
Mysql:
select id,index
,json_data->>'$.celldata' AS celldata,json_data->>'$.column' AS column
,json_data->>'$.row' AS row
from docssheet p where p.list_id='45794d3ceb1f0054a2b6d47b0ac82212' and p.index='Sheet_6aokgc2qSWWH20210505161959' and p.block_id='30_6' and p.is_delete=0 ORDER BY p.id DESC LIMIT 1 ;
Query Result:
id :183152282723028992
index :Sheet_6aokgc2qSWWH20210505161959
celldata:[{"c": 6, "r": 30, "v": {"m": "l", "v": "l", "ct": {"t": "g", "fa": "General"}}}]
column: (NULL)
row : (NULL)
Map<String, Object> map= luckySheetJdbcTemplate.queryForMap(sql, new Object[]{listId,index,blockId});
ERROR Incorrect result size: expected 1, actual 0
problem 1: json_data->>'$.column' Or json_data->>'$.c' ?
problem 2: record count 1; but warning ERROR Incorrect result size: expected 1, actual 0 ?
您的功能请求与问题有关吗?
当前仅实现了DB为postgre的版本(有群里询问过是出于postgre的jsonb操作有事务保证),是否可以考虑对其他数据库进行扩展支持。
描述您想要的解决方案
看到代码里有预留一个if{}else{}的位置给其他DB存储的实现,但这种方式不够优雅甚至说有点丑陋,建议是可以参考dubbo的插件化思路,将不同DB存储的实现逻辑解耦。
其他内容
搞不会java啊看到里面很多gridkey参数。
我这里使用的是docker一键部署,请问如何新建多个html,使用不同的gridKey?
The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook
如标题描述
描述错误
清楚简洁地描述错误是什么。
删除行列没有效果
重现
重现错误的步骤:
1.第一步操作
直接删除就行
4.最后看到了什么错误
代码没有报错 应该是后端代码没有写全
期望的结果
对您期望发生的结果简洁明了的描述。
删除成功
屏幕截图或演示
方便的话,贴上屏幕截图或在线链接复现问题,我们复测时会更精准
最新
备注
其他说明
我本地改了 可以交流一下
http://luckysheet.lashuju.com/demo/
这个服务器是死机了吗?这个demo暂时无法观看了
您的功能请求与问题有关吗?
清楚简洁地说明问题。
描述您想要的解决方案
对您想要的功能效果简洁明了的描述。
其他内容
其他说明
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.