Пустая таблица Excel возвращает неправильный счетчик строк - PullRequest
0 голосов
/ 25 января 2012

Я использую код ниже, чтобы прочитать мою электронную таблицу Excel (Sample.xls, также ниже).

sample.xls

[Лист 1]
Столбец 0, строка 0 = «Тест 1»
Столбец 0, строка 1 = «Тест 2»
Колонка 0, строка 2 = «Тест 3»

[Лист 2] Все столбцы / строки пустые и пустые

public void importFileButton_Click(object sender, EventArgs e)
{
string sourcefile = "C:\\Sample.xls";
string sqlQuery = null;

if (File.Exists(sourceFile))
{
DataTable fileSheetInfo = null;

OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 8.0;HDR=No;IMEX=1;\"");
connection.Open();

fileSheetInfo = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
int fileSheetCount = fileSheetInfo.Rows.Count;

OleDbCommand command = new OleDbCommand();

String[] sheetNames = new String[fileSheetInfo.Rows.Count];

int i = 0;

foreach (DataRow row in fileSheetInfo.Rows)
{
sheetNames[i] = row["TABLE_NAME"].ToString();
sqlQuery1 = "SELECT * FROM [" + sheetNames[i] + "]";
command.CommandText = sqlQuery1;

OleDbDataAdapter adapter1 = new OleDbDataAdapter(sqlQuery, connection);
DataTable sheetData = new DataTable();
adapter1.Fill(sheetData);

int iRow = sheetData.Rows.Count;

MessageBox.Show("Sheet Name: " + sheetNames[i], "Sheet Name", MessageBoxButtons.OK);
MessageBox.Show("Rows: " + iRow.ToString(), "Row Count", MessageBoxButtons.OK);

i++;
}
}
}

Почему код возвращает количество строк 1 или 2 для чистого листа (Sheet2)? Почему счетчик строк не отображается как 0 для листа 2? Я заметил, что число строк равно 1, если у меня файл открыт в Excel; 2, если файл закрыт в Excel.

Спасибо за помощь!

...