3 回答

TA貢獻1775條經驗 獲得超11個贊
您可以for在行級別的循環中設置 bool 。然后循環所有單元格并在單元格不為空時更改布爾值。
//loop through rows and columns
for (int row = 1; row <= rowCount; row++)
{
//create a bool
bool RowIsEmpty = true;
for (int col = 1; col <= colCount; col++)
{
//check if the cell is empty or not
if (worksheet.Cells[row, col].Value != null)
{
RowIsEmpty = false;
}
}
//display result
if (RowIsEmpty)
{
Label1.Text += "Row " + row + " is empty.<br>";
}
}

TA貢獻1796條經驗 獲得超7個贊
您可以使用 linq 檢查行單元格范圍值:
var startRow = 1;
var endRow = 1;
var columnStart = 1;
var columnEnd = worksheet.Cells.End.Column;
var cellRange = worksheet.Cells[startRow, columnStart , endRow, columnEnd];
var isRowEmpty = cellRange.All(c => c.Value == null)

TA貢獻1810條經驗 獲得超4個贊
如果您不知道要檢查的列數,則可以利用以下事實:Worksheet.Cells集合僅包含實際具有值的單元格的條目:
[TestMethod]
public void EmptyRowsTest()
{
//Throw in some data
var datatable = new DataTable("tblData");
datatable.Columns.AddRange(new[] { new DataColumn("Col1", typeof(int)), new DataColumn("Col2", typeof(int)), new DataColumn("Col3", typeof(object)) });
//Only fille every other row
for (var i = 0; i < 10; i++)
{
var row = datatable.NewRow();
if (i % 2 > 0)
{
row[0] = i;
row[1] = i * 10;
row[2] = Path.GetRandomFileName();
}
datatable.Rows.Add(row);
}
//Create a test file
var existingFile = new FileInfo(@"c:\temp\EmptyRowsTest.xlsx");
if (existingFile.Exists)
existingFile.Delete();
using (var pck = new ExcelPackage(existingFile))
{
var worksheet = pck.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromDataTable(datatable, true);
pck.Save();
}
//Load from file
using (var pck = new ExcelPackage(existingFile))
{
var worksheet = pck.Workbook.Worksheets["Sheet1"];
//Cells only contains references to cells with actual data
var cells = worksheet.Cells;
var rowIndicies = cells
.Select(c => c.Start.Row)
.Distinct()
.ToList();
//Skip the header row which was added by LoadFromDataTable
for (var i = 1; i <= 10; i++)
Console.WriteLine($"Row {i} is empty: {rowIndicies.Contains(i)}");
}
}
在輸出中給出這個(第 0 行是列標題):
Row 1 is empty: True
Row 2 is empty: False
Row 3 is empty: True
Row 4 is empty: False
Row 5 is empty: True
Row 6 is empty: False
Row 7 is empty: True
Row 8 is empty: False
Row 9 is empty: True
Row 10 is empty: False
- 3 回答
- 0 關注
- 434 瀏覽
添加回答
舉報