使用EPPlus阅读电子表格时,我很惊讶地看到Dimension.End.Column返回的索引(基于1的索引)比我知道的最后一个索引更高。
例如,在这样的电子表格中:
A B C D...
1 value
Run Code Online (Sandbox Code Playgroud)
我希望Dimension.End.Column为1,对应于第一列。
但是,它通常更大。这是为什么?
要回答此问题,需要深入研究EpPlus的源代码。
无论如何,这是我用来获取实际(值)尺寸的扩展方法,即使对于边缘情况,它也可以正常工作:
public static ExcelAddressBase GetValuedDimension(this ExcelWorksheet worksheet)
{
var dimension = worksheet.Dimension;
if (dimension == null) return null;
var cells = worksheet.Cells[dimension.Address];
Int32 minRow = 0, minCol = 0, maxRow = 0, maxCol = 0;
var hasValue = false;
foreach (var cell in cells.Where(cell => cell.Value != null))
{
if (!hasValue)
{
minRow = cell.Start.Row;
minCol = cell.Start.Column;
maxRow = cell.End.Row;
maxCol = cell.End.Column;
hasValue = true;
}
else
{
if (cell.Start.Column < minCol)
{
minCol = cell.Start.Column;
}
if (cell.End.Row > maxRow)
{
maxRow = cell.End.Row;
}
if (cell.End.Column > maxCol)
{
maxCol = cell.End.Column;
}
}
}
return hasValue ? new ExcelAddressBase(minRow, minCol, maxRow, maxCol) : null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |