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的时候会
出现很多的空白行列
有什么解决办法么? 回复 1楼seasky083的帖子
您是说TruncateEmptyRowsAndColumns无法去掉空白列,不知道我的理解对吗?代码示例如下:
this.FpSpread1.OpenExcel(Server.MapPath("tt2.xls"), ExcelOpenFlags.TruncateEmptyRowsAndColumns);
如果是这个问题,看起来应该是个bug,已经反馈给研发组,如果有回复,我会第一时间回复您。
谢谢! 是这个问题,但是我不确定这个能解决问题,现在又有一个新的问题,我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中可以,正式环境中反而不行 没人解决么,金牌用户呢,赶紧回答一下 回复 4楼seasky083的帖子
您好!
正在模拟您的环境,尝试重现您的问题,需要一些时间。建议您直接上传可以重现的工程压缩包,可以有利于我们尽快重现和解决您的问题。
谢谢! 回复 3楼seasky083的帖子
您好!
尝试模拟您的项目具体场景,并没有重现这个问题。
应该是因为您的代码片段中含有太多局部变量,我们这边无法模拟。建议您直接上传出问题的完整工程程序包。谢谢! 完整工程上传不了,太大了,我自己建的demo也是可以的,但是在这个正式环境里面就不行 你们可以远程协助之类的,看一下,问题的确是的,不清楚什么原因造成的,我自己demo里的代码和正式环境中的那个代码都是一直的,但是得到的结果不一致 回复 8楼seasky083的帖子
您好!
根据您的代码片段,初步估计是您写得template相关代码影响了最终结果。但是具体结果还需要实际调试。
为了用户的安全考虑,我们不支持远程协助。建议您通过百度云盘之类的云盘上传您的程序后,发送地址给我们,我们帮助您跟踪调试一下程序。
谢谢! 代码给你们也用不了,好多环境要配置
ReportTemplate这个东西只是赋值使用的,跟这个应该是没有关系
我在book.OpenExcel之后,就发现对应的sheet.NonEmptyColumnCount和sheet.NonEmptyRowCount为0了
而且这个代码也不是一直都不能用,有的excel打开是可以的,有的是不可以的,这种情况难道只能解释为excel的问题么
excel2003和2010,都是有的可以导入成功,有的导入进去就是空白