seasky083 发表于 2015-8-25 11:17:00

sheet里面的NonEmptyColumnCount问题

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的时候会
出现很多的空白行列

有什么解决办法么?

Helen 发表于 2015-8-25 12:29:00

回复 1楼seasky083的帖子

您是说TruncateEmptyRowsAndColumns无法去掉空白列,不知道我的理解对吗?代码示例如下:
this.FpSpread1.OpenExcel(Server.MapPath("tt2.xls"), ExcelOpenFlags.TruncateEmptyRowsAndColumns);
如果是这个问题,看起来应该是个bug,已经反馈给研发组,如果有回复,我会第一时间回复您。
谢谢!

seasky083 发表于 2015-8-25 12:42:00

是这个问题,但是我不确定这个能解决问题,现在又有一个新的问题,我excel中是有数据列的
但是在读取数据的时候在不同的项目中得到的结果不一样

第一个,我自己写的测试demo
FpSpread book = null;
            try
            {
                book = new FpSpread();
                book.OpenExcel(file);
                foreach (SheetView sheet in book.Sheets)
                {
                  if (sheetNames.Contains(sheet.SheetName))
                  {
                        FpSpread bookIn = new FpSpread();
                        //直接新建一个

                        string Name = sheet.SheetName;
                        int MaxCol = sheet.NonEmptyColumnCount;// Constants.DefaultMaxCol;
                        int MaxRow = sheet.NonEmptyRowCount;// Constants.DefaultMaxRow;
                        bookIn.Sheets.Add(sheet);
                        MemoryStream stream = new MemoryStream();
                        bookIn.SaveExcel(stream);
                        byte[] b = stream.ToArray();
                  }
                }

            }
            catch (Exception e)
            {

            }

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

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

                  _ReportTemplateList.Add(_ReportTemplate);

                  //bookIn.OpenExcel(stream);
                  //bookIn.ActiveSheetView
                }
            }
            ResultInfo rst = Ledger_ReportTemplate_En.ImportReportTemplate(_ReportTemplateList);
            return rst;


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

两段代码我比较多,没有发现有差异的地方,但是为什么得到的结果不一样呢
demo中可以,正式环境中反而不行

seasky083 发表于 2015-8-25 15:16:00

没人解决么,金牌用户呢,赶紧回答一下

Helen 发表于 2015-8-25 15:27:00

回复 4楼seasky083的帖子

您好!
正在模拟您的环境,尝试重现您的问题,需要一些时间。建议您直接上传可以重现的工程压缩包,可以有利于我们尽快重现和解决您的问题。
谢谢!

Helen 发表于 2015-8-25 15:42:00

回复 3楼seasky083的帖子

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


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

seasky083 发表于 2015-8-25 15:57:00

完整工程上传不了,太大了,我自己建的demo也是可以的,但是在这个正式环境里面就不行

seasky083 发表于 2015-8-25 15:58:00

你们可以远程协助之类的,看一下,问题的确是的,不清楚什么原因造成的,我自己demo里的代码和正式环境中的那个代码都是一直的,但是得到的结果不一致

Helen 发表于 2015-8-25 16:17:00

回复 8楼seasky083的帖子

您好!
根据您的代码片段,初步估计是您写得template相关代码影响了最终结果。但是具体结果还需要实际调试。
为了用户的安全考虑,我们不支持远程协助。建议您通过百度云盘之类的云盘上传您的程序后,发送地址给我们,我们帮助您跟踪调试一下程序。
谢谢!

seasky083 发表于 2015-8-25 16:34:00

代码给你们也用不了,好多环境要配置
ReportTemplate这个东西只是赋值使用的,跟这个应该是没有关系
我在book.OpenExcel之后,就发现对应的sheet.NonEmptyColumnCount和sheet.NonEmptyRowCount为0了

而且这个代码也不是一直都不能用,有的excel打开是可以的,有的是不可以的,这种情况难道只能解释为excel的问题么
excel2003和2010,都是有的可以导入成功,有的导入进去就是空白
页: [1] 2 3
查看完整版本: sheet里面的NonEmptyColumnCount问题