解析 XLS 时跳过某些行和列
Skip certain Rows and Columns while Parsing XLS
我使用以下代码通过 ExcelDataReader 解析 XLS 文件。我想排除前三行,前两列,然后是 9 之后的任何列。
//create the reader
var reader = ExcelReaderFactory.CreateReader(stream);
var result = reader.AsDataSet();
//remove the first 3 rows
DataRowCollection dt = result.Tables[0].Rows;
dt.RemoveAt(0);
dt.RemoveAt(1);
dt.RemoveAt(2);
//exclude the column 1 and2 and any columns after 9
for (int columnNumber = 2; columnNumber < 8; columnNumber++)
{
foreach (DataRow dr in dt)
{
Debug.Log(dr[columnNumber].ToString());
msg += dr[columnNumber].ToString();
}
}
不幸的是,它没有按预期跳过行和列。如何使用 excelDataReader 跳过特定的列和行?
您正在执行以下操作
dt.RemoveAt(0);
dt.RemoveAt(1);
dt.RemoveAt(2);
当第一行执行时,行重新索引,1 变为 0,2 变为 1,依此类推。
当第二行执行时,您现在已经删除了原来位于位置 2 的行。这些行再次重新编制索引。
当第三行执行时,您将再次删除不正确的行。
因此,当此过程完成时,它将删除最初位于 0、2 和 4 的行。
更改代码以删除正确的行,或者使用 linq 或 for 循环跳过三行。
使用 for 循环的示例(未测试)。
//create the reader
var reader = ExcelReaderFactory.CreateReader(stream);
var result = reader.AsDataSet();
DataRowCollection dt = result.Tables[0].Rows;
//ignore the first 3 rows
for(int dataRowCount = 3; dataRowCount < dt.Count; dataRowCount++)
{
//exclude the column 1 and 2 and any columns after 9
for (int columnNumber = 2; columnNumber < 8; columnNumber++)
{
Debug.Log(dr[dataRowCount][columnNumber].ToString());
msg += dr[dataRowCount][columnNumber].ToString();
}
}
我使用以下代码通过 ExcelDataReader 解析 XLS 文件。我想排除前三行,前两列,然后是 9 之后的任何列。
//create the reader
var reader = ExcelReaderFactory.CreateReader(stream);
var result = reader.AsDataSet();
//remove the first 3 rows
DataRowCollection dt = result.Tables[0].Rows;
dt.RemoveAt(0);
dt.RemoveAt(1);
dt.RemoveAt(2);
//exclude the column 1 and2 and any columns after 9
for (int columnNumber = 2; columnNumber < 8; columnNumber++)
{
foreach (DataRow dr in dt)
{
Debug.Log(dr[columnNumber].ToString());
msg += dr[columnNumber].ToString();
}
}
不幸的是,它没有按预期跳过行和列。如何使用 excelDataReader 跳过特定的列和行?
您正在执行以下操作
dt.RemoveAt(0);
dt.RemoveAt(1);
dt.RemoveAt(2);
当第一行执行时,行重新索引,1 变为 0,2 变为 1,依此类推。
当第二行执行时,您现在已经删除了原来位于位置 2 的行。这些行再次重新编制索引。
当第三行执行时,您将再次删除不正确的行。
因此,当此过程完成时,它将删除最初位于 0、2 和 4 的行。
更改代码以删除正确的行,或者使用 linq 或 for 循环跳过三行。
使用 for 循环的示例(未测试)。
//create the reader
var reader = ExcelReaderFactory.CreateReader(stream);
var result = reader.AsDataSet();
DataRowCollection dt = result.Tables[0].Rows;
//ignore the first 3 rows
for(int dataRowCount = 3; dataRowCount < dt.Count; dataRowCount++)
{
//exclude the column 1 and 2 and any columns after 9
for (int columnNumber = 2; columnNumber < 8; columnNumber++)
{
Debug.Log(dr[dataRowCount][columnNumber].ToString());
msg += dr[dataRowCount][columnNumber].ToString();
}
}