找回密码
 立即注册

QQ登录

只需一步,快速开始

seasky083

银牌会员

7

主题

39

帖子

2360

积分

银牌会员

积分
2360

活字格认证微信认证勋章元老葡萄

seasky083
银牌会员   /  发表于:2015-8-25 11:16  /   查看:17131  /  回复:24
FarPoint.Web.Spread.FpSpread book = new FpSpread();
book.OpenExcel(file);
foreach (SheetView sheet in book.Sheets)
{
     int cols=sheet.NonEmptyColumnCount;
     int rows=sheet.NonEmptyRowCount;
}

这样获取导入进来的excel的非空白行和非空白列的行数列数的时候,为什么出来的结果跟实际
excel里面非空白行列的数据对不起来,列数会把整个excel都包括进去,导致打开这个excel的时候会
出现很多的空白行列

有什么解决办法么?

24 个回复

倒序浏览
Helen
高级会员   /  发表于:2015-8-25 12:29:00
沙发
回复 1楼seasky083的帖子

您是说TruncateEmptyRowsAndColumns无法去掉空白列,不知道我的理解对吗?代码示例如下:
  1. this.FpSpread1.OpenExcel(Server.MapPath("tt2.xls"), ExcelOpenFlags.TruncateEmptyRowsAndColumns);
复制代码

如果是这个问题,看起来应该是个bug,已经反馈给研发组,如果有回复,我会第一时间回复您。
谢谢!
回复 使用道具 举报
seasky083
银牌会员   /  发表于:2015-8-25 12:42:00
板凳
是这个问题,但是我不确定这个能解决问题,现在又有一个新的问题,我excel中是有数据列的
但是在读取数据的时候在不同的项目中得到的结果不一样

第一个,我自己写的测试demo
  1. FpSpread book = null;
  2.             try
  3.             {
  4.                 book = new FpSpread();
  5.                 book.OpenExcel(file);
  6.                 foreach (SheetView sheet in book.Sheets)
  7.                 {
  8.                     if (sheetNames.Contains(sheet.SheetName))
  9.                     {
  10.                         FpSpread bookIn = new FpSpread();
  11.                         //直接新建一个

  12.                         string Name = sheet.SheetName;
  13.                         int MaxCol = sheet.NonEmptyColumnCount;// Constants.DefaultMaxCol;
  14.                         int MaxRow = sheet.NonEmptyRowCount;// Constants.DefaultMaxRow;
  15.                         bookIn.Sheets.Add(sheet);
  16.                         MemoryStream stream = new MemoryStream();
  17.                         bookIn.SaveExcel(stream);
  18.                         byte[] b = stream.ToArray();
  19.                     }
  20.                 }

  21.             }
  22.             catch (Exception e)
  23.             {

  24.             }
复制代码


第二个我在项目中具体使用的
  1. FpSpread book = new FpSpread();
  2.             book.OpenExcel(file, FarPoint.Excel.ExcelOpenFlags.TruncateEmptyRowsAndColumns);
  3.             List<Ledger_ReportTemplate_En> _ReportTemplateList = new List<Ledger_ReportTemplate_En>();
  4.             foreach (SheetView sheet in book.Sheets)
  5.             {
  6.                 if (sheetNames.Contains(sheet.SheetName))
  7.                 {
  8.                     FpSpread bookIn = new FpSpread();
  9.                     Ledger_ReportTemplate_En _ReportTemplate = new Ledger_ReportTemplate_En();
  10.                     _ReportTemplate.FileName = sheet.SheetName;
  11.                     _ReportTemplate.Cols = sheet.NonEmptyColumnCount;
  12.                     _ReportTemplate.Rows = sheet.NonEmptyRowCount;
  13.                     _ReportTemplate.ReportGroupID = Guid.Parse(TempData["p_ReportGroupID"].ToString());
  14.                     TempData["p_ReportGroupID"] = _ReportTemplate.ReportGroupID;

  15.                     bookIn.Sheets.Add(sheet);
  16.                     MemoryStream stream = new MemoryStream();
  17.                     bookIn.SaveExcel(stream);
  18.                     _ReportTemplate.TemplateFile = stream.ToArray();

  19.                     _ReportTemplateList.Add(_ReportTemplate);

  20.                     //bookIn.OpenExcel(stream);
  21.                     //bookIn.ActiveSheetView
  22.                 }
  23.             }
  24.             ResultInfo rst = Ledger_ReportTemplate_En.ImportReportTemplate(_ReportTemplateList);
  25.             return rst;
复制代码



第一个能得到excel的具体数据行列,然后stream出来的结果也是excel中对应的数据
第二个得到的行列都是0,stream出来的这个结果也是空

两段代码我比较多,没有发现有差异的地方,但是为什么得到的结果不一样呢
demo中可以,正式环境中反而不行
回复 使用道具 举报
seasky083
银牌会员   /  发表于:2015-8-25 15:16:00
地板
没人解决么,金牌用户呢,赶紧回答一下
回复 使用道具 举报
Helen
高级会员   /  发表于:2015-8-25 15:27:00
5#
回复 4楼seasky083的帖子

您好!
正在模拟您的环境,尝试重现您的问题,需要一些时间。建议您直接上传可以重现的工程压缩包,可以有利于我们尽快重现和解决您的问题。
谢谢!
回复 使用道具 举报
Helen
高级会员   /  发表于:2015-8-25 15:42:00
6#
回复 3楼seasky083的帖子

您好!
尝试模拟您的项目具体场景,并没有重现这个问题。


应该是因为您的代码片段中含有太多局部变量,我们这边无法模拟。建议您直接上传出问题的完整工程程序包。谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
seasky083
银牌会员   /  发表于:2015-8-25 15:57:00
7#
完整工程上传不了,太大了,我自己建的demo也是可以的,但是在这个正式环境里面就不行
回复 使用道具 举报
seasky083
银牌会员   /  发表于:2015-8-25 15:58:00
8#
你们可以远程协助之类的,看一下,问题的确是的,不清楚什么原因造成的,我自己demo里的代码和正式环境中的那个代码都是一直的,但是得到的结果不一致
回复 使用道具 举报
Helen
高级会员   /  发表于:2015-8-25 16:17:00
9#
回复 8楼seasky083的帖子

您好!
根据您的代码片段,初步估计是您写得template相关代码影响了最终结果。但是具体结果还需要实际调试。
为了用户的安全考虑,我们不支持远程协助。建议您通过百度云盘之类的云盘上传您的程序后,发送地址给我们,我们帮助您跟踪调试一下程序。
谢谢!
回复 使用道具 举报
seasky083
银牌会员   /  发表于:2015-8-25 16:34:00
10#
代码给你们也用不了,好多环境要配置
ReportTemplate这个东西只是赋值使用的,跟这个应该是没有关系
我在book.OpenExcel之后,就发现对应的sheet.NonEmptyColumnCount和sheet.NonEmptyRowCount为0了

而且这个代码也不是一直都不能用,有的excel打开是可以的,有的是不可以的,这种情况难道只能解释为excel的问题么
excel2003和2010,都是有的可以导入成功,有的导入进去就是空白
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部