找回密码
 立即注册

QQ登录

只需一步,快速开始

yimeng1024

高级会员

1

主题

6

帖子

1967

积分

高级会员

积分
1967

活字格认证

最新发帖
yimeng1024
高级会员   /  发表于:2014-8-27 10:42  /   查看:8832  /  回复:8
问题描述:

本人在asp.net页面中打开一个xlsx文件,导致系统崩溃,以下两种打开方式都不行:

1)从数据库中查询byte[]文件
Stream stream = new MemoryStream(rptFile.FileContent);//rptFile.FileContent:数据库查询而得
FpSpread1.OpenExcel(stream);
2)通过文件打开
FpSpread1.OpenExcel(Server.MapPath("1.xlsx"));//"1.xlsx":即为肇事Excel文件,已上传到附件。

另外备注:

该统一程序已经打开过很多xlsx、xls文件都没有出过任何问题,最近一个客户有几个xlsx文件出现该问题,
一开始寻找该文件与其他文件的不同,发现该文件有外部源链接,后来删除也不行,干脆把所有文本都删掉了,也不行。
附件中算是一个比较干净的xlsx文件了,请大神帮忙看看问题出在哪里,感激不尽!!

Spread版本:Spread asp.net 6.0

.net版本:.netframework4.0

1.zip

16.99 KB, 下载次数: 505

1.xlsx

8 个回复

倒序浏览
yimeng1024
高级会员   /  发表于:2014-8-27 14:47:00
沙发
有人试过吗?

请问版主能重现问题吗?

急急急!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-27 17:33:00
板凳
回复 1楼yimeng1024的帖子

这个原因可能是由于 Excel 中有很多空行,全部加载到 Excel 中造成的,请你尝试以下方法:
FpSpread1.OpenExcel("filename", FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns);
回复 使用道具 举报
yimeng1024
高级会员   /  发表于:2014-8-28 09:20:00
地板
回复 3楼iceman的帖子

版主您好,感谢您的回复。

但是参照您的方法,试一下了,还是不行。

我也有预感应该这个Excel文件占用了过多空行造成该问题,因为新建一个只有第一个单元格有文本Excel只有9KB,而该问题Excel文件有25KB。但是不知道怎么解决,有空请您再试试。
回复 使用道具 举报
yimeng1024
高级会员   /  发表于:2014-8-28 10:05:00
5#
回复 3楼iceman的帖子


Spread.jpg (98.47 KB, 下载次数: 477)
回复 使用道具 举报
yimeng1024
高级会员   /  发表于:2014-8-28 10:24:00
6#
想到了一种解决办法:强制删除多余的空行,如下代码:

                FpSpread1.OpenExcel(Server.MapPath("1.xlsx"));

                for (int s = 0; s < this.FpSpread1.Sheets.Count; s++)
                {
                    int rowCount = this.FpSpread1.Sheets.NonEmptyRowCount;
                    int colCount = this.FpSpread1.Sheets.NonEmptyColumnCount;

                    int rowCount2 = this.FpSpread1.Sheets.RowCount;
                    int colCount2 = this.FpSpread1.Sheets.ColumnCount;

                    this.FpSpread1.Sheets.Rows.Remove(rowCount, rowCount2 - rowCount);
                    this.FpSpread1.Sheets.Columns.Remove(colCount, colCount2 - colCount);
                }

谁还有更好的解决办法?期待....
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-28 17:27:00
7#
回复 6楼yimeng1024的帖子

请问有没有尝试 3# 中的代码?在您那边不起作用吗?
回复 使用道具 举报
yimeng1024
高级会员   /  发表于:2014-8-29 13:26:00
8#
回复 7楼iceman的帖子

嗯,3#的代码已经试过了,不行
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-8-29 17:57:00
9#
回复 8楼yimeng1024的帖子

3# 中代码的作用就是去除excel中的空行,你可以把 Excel 中所有格式清除下再加载。
或者可能是否是有哪个行有空格没有发现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部