我使用EPPlus来阅读工作表.在此工作表中,我需要的数据是列B-D.在列中A有静态值,我会忽略.col A中的值填充到Row 1000.但是,我需要的数据只会存在,比如说Row 450.目前我用
int endRow = workSheet.Dimension.End.Row;
Run Code Online (Sandbox Code Playgroud)
计算要读取的最后一行,但是返回值为1000.有没有办法让我获得endRow的值450,忽略col A?
这是一个替代方案,它应该更高效,因为它从最后一行开始计算
int colB = 2;
int colD = 4;
int lastRow = workSheet.Dimension.End.Row;
while(lastRow >= 1) {
var range = sheet.Cells[row, colB , row, colD ]
if(range.Any(c => c.value != null))) {
break;
}
lastRow --;
}
Run Code Online (Sandbox Code Playgroud)
您也可以检查该值是否为空.
if(worksheet.cells[row,column].value != null)
{
//ok to proceed
}
Run Code Online (Sandbox Code Playgroud)
小智 1
我会使用 Linq 查询来获取您需要的信息。
using (ExcelPackage exPackage = new ExcelPackage(aFile))
{
ExcelWorksheet sheet = exPackage.Workbook.Worksheets["Sheet1"];
List<String> checkCol = new List<String>();
checkCol.Add("B");
checkCol.Add("C");
checkCol.Add("D");
int longestColumn = 0;
foreach (String col in checkCol)
{
var cells = from c in sheet.Cells[col + ":" + col]
where c.Value != null & c.Text.ToString() != ""
select c;
if (cells.Count() > longestColumn) longestColumn = cells.Count();
}
MessageBox.Show("The endpoint is: " + longestColumn.ToString());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14413 次 |
| 最近记录: |