找回密码
 立即注册

QQ登录

只需一步,快速开始

gavinqin

注册会员

4

主题

11

帖子

43

积分

注册会员

积分
43

微信认证勋章

最新发帖
gavinqin
注册会员   /  发表于:2020-1-8 15:18  /   查看:8166  /  回复:10
1金币
本帖最后由 gavinqin 于 2020-1-9 16:14 编辑

我们在后端使用如下写法

MemoryStream ms = new MemoryStream();
var saveOption = new GrapeCity.Documents.Excel.XlsxSaveOptions();
saveOption.IsCompactMode = true;
workbook.Save(ms, saveOption);
Byte[] buffer = ms.GetBuffer();
MemoryStream msResult = new MemoryStream(buffer);
var result = new FileStreamResult(
    msResult,
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
);
return result;


前端使用Spreadjs接收数据,我们直接把blob倒入到了spreadjs中,之后又把spreadjs里面的数据读取出来显示在wijmo表格中,发现显示的日期格式的数据不对,如下图:
image.png423184813.png
另外,我们在前端把blob下载下来存为xlsx,发现用excel2019无法打开,但是用wps的Excel可以打开
image.png392156676.png


10 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-1-8 21:21:24
沙发
您好,这种问题需要您提供下前面的操作步骤,方便重现问题。
回复 使用道具 举报
gavinqin
注册会员   /  发表于:2020-1-9 09:56:30
板凳
dexteryao 发表于 2020-1-8 21:21
您好,这种问题需要您提供下前面的操作步骤,方便重现问题。

问题中就是这样描述的呢:
1. 后端服务器返回spread.net的filestream
2. 前端把filestream(也就是blob)导入到spread.js里面,同时把blob以xlsx的格式下载下来
3. 把spread的数据取出来塞给wijmo的grid

目前的问题有两个:
1. 第二步保存下来的xlsx文件无法用office 2019打开,但可以用wps的表格打开
2. 第三步中把数据塞给wijmo后日期类型的数据显示不正确
回复 使用道具 举报
gavinqin
注册会员   /  发表于:2020-1-9 17:58:44
地板
gavinqin 发表于 2020-1-9 09:56
问题中就是这样描述的呢:
1. 后端服务器返回spread.net的filestream
2. 前端把filestream(也就是blob ...

附件是我们保存下来的一个文件,我给里面没有填数据,但是依然无法使用Excel2019打开,但可以使用wps正常打开

2020-01-01_2020-01-31.zip

4.09 KB, 阅读权限: 150, 下载次数: 2

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-1-10 17:50:20
5#
您好,需要您提供原始的Excel文件,我们用GCExcel处理看是否能重现问题。
另外OADate是一种时间保存格式,如果您需要格式化的时间,需要获取text。 Excel和SpreadJS的时间现实是OADate 格式化之后的。
回复 使用道具 举报
gavinqin
注册会员   /  发表于:2020-1-10 17:58:29
6#
dexteryao 发表于 2020-1-10 17:50
您好,需要您提供原始的Excel文件,我们用GCExcel处理看是否能重现问题。
另外OADate是一种时间保存格式, ...

我上面的一条里面zip里就是生成的原始的xlsx文件
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-1-13 09:28:12
7#
gavinqin 发表于 2020-1-10 17:58
我上面的一条里面zip里就是生成的原始的xlsx文件

“原始的xlsx文件”指的是SpreadJS生成的文件吗,如果是这样,这个文件已经有问题了,请提供下spreadJS那边的操作步骤。

现在是要提供重现问题的步骤,只有报错的Excel文件我们这边很难找到原因。比如一个文件是好的,用SpreadJS或者GCExcel做了某一步操作,导出文件出问题了,那就提供那个好的文件和这一步操作的代码,这样我们很快就能找到问题并解决。
回复 使用道具 举报
gavinqin
注册会员   /  发表于:2020-1-13 11:05:53
8#
dexteryao 发表于 2020-1-13 09:28
“原始的xlsx文件”指的是SpreadJS生成的文件吗,如果是这样,这个文件已经有问题了,请提供下spreadJS那 ...

image.png271276854.png
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-1-13 16:41:53
9#
本帖最后由 dexteryao 于 2020-1-13 16:42 编辑

“1. 后端服务器返回spread.net的filestream” 这个filestream的文件可以提供吗,是否是之前上传的“
2020-01-01_2020-01-31.zip”,如果是,那这个文件本事用Excel打开就会提示错误。如果不是,请提供这个filestream的生成方法。
回复 使用道具 举报
gavinqin
注册会员   /  发表于:2020-1-13 16:56:30
10#
dexteryao 发表于 2020-1-13 16:41
“1. 后端服务器返回spread.net的filestream” 这个filestream的文件可以提供吗,是否是之前上传的“
20 ...

这个是用c#代码生成的stream,生成方法是这样:

var workbook = new GrapeCity.Documents.Excel.Workbook();
var worksheet = workbook.Worksheets[0];
var rowCount = list.GetLength(0) + 1;
var colCount = list.GetLength(1) + 1;
worksheet.Range[0, 0 ,rowCount, colCount].Value = list;

MemoryStream ms = new MemoryStream();
var saveOption = new GrapeCity.Documents.Excel.XlsxSaveOptions();
saveOption.IsCompactMode = true;
workbook.Save(ms, saveOption);
Byte[] buffer = ms.GetBuffer();
MemoryStream msResult = new MemoryStream(buffer);
var result = new FileStreamResult(
    msResult,
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
);
return result; // 后端返回的filestream
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部