问候StackOverflow‘’lings
让我解释一下我的困境:
假设我有3列(总共9列,因为它们被合并为3列)在一行中,这3列中的每一列在其正下方的行中都有数据,我有9列,每个单元格中都有数据。
其思想是读取包含3列的第一行,然后找出这些列的跨度有多长,这样我就可以在创建结果xml时将正确的值赋给。以下是我试图实现的大致目标:
行1列1(范围合并到3列)=足球队行2列1、2、3将分别保存关于足球队的不同数据行1列2(范围合并到3列)=足球运动员行2列4、5、6将分别保存关于足球运动员的不同数据行1列3(范围将合并到3列)=足球财务行2列7、8、9将分别保存关于足球财务的不同数据
由于某种原因,当我读取第一行时,我得到了值:
= "Football Teams“1= null 2= null 4=”足球运动员“
但是当我读取第二行时,我得到了列的完整数组(9)!我使用的代码如下所示:
Range dataRange = worksheet.get_Range("A1", Missing.Value);
dataRange = dataRange.get_End(XlDirection.xlRight);
string dataAddress = dataRange.get_Address(
false, false, XlReferenceStyle.xlA1,
Type.Missing, Type.Missing);
dataRange = worksheet.get_Range("A1", dataAddress);
// Cast the range into an object array
object[,] dataValues = (object[,])dataRange.Value2;
任何正确方向的帮助/指导/耳光都将不胜感激!
发布于 2010-11-16 18:28:02
当你合并了单元格后,这些单元格仍然存在(就你的代码而言),只是它们有空值。因此,合并单元格组中的第一个单元格将具有该值。
读完你的评论,再读一遍你的代码,我认为问题出在你如何选择最后一列:
Range dataRange = worksheet.get_Range("A1", Missing.Value);
dataRange = dataRange.get_End(XlDirection.xlRight);
我经常发现,向右做'End‘并不一定会得到右边的最后一项,特别是如果单元格之间有空格(这里就是这种情况,因为单元格被合并了)。所以这样做可能会更好(通过一些清理来保存一些行)- 'XFD‘是Excel 2007和更高版本中的最后一列:
Range lastCell = worksheet.get_Range("XFD1").get_End(XlDirection.xlLeft);
Range dataRange = worksheet.get_Range("A1", lastCell);
object[,] dataValues = (object[,])dataRange.Value2;
请注意,此代码不会获取第三个组中的最后两个空值-唯一的方法是显式设置范围,如下所示:
Range dateRange = worksheet.get_Range("A1", "I1");
https://stackoverflow.com/questions/4193033
复制相似问题