Проблема с библиотекой MiniExcel на C#. Баг, или я что-то делаю не так?C#

Место общения программистов C#
Ответить
Anonymous
 Проблема с библиотекой MiniExcel на C#. Баг, или я что-то делаю не так?

Сообщение Anonymous »

Я пытаюсь заполнить DataGridView содержимым из файла Excel. Для этого я использую библиотеку MiniExcel версии 1.34.2.
Когда я использую var Records = MiniExcel.Query(fileName).ToList();< /p>
Я получаю сообщение об ошибке: Сообщение об ошибке: System.InvalidOperationException: «Счетчик свойств отмены игнорирования объекта не может быть равен 0»
Однако, когда я меняю его на var Records = MiniExcel.Query(fileName).ToList();, это работает.
Во втором случае он игнорирует заголовки в первой строке и использует A , B, C и др. в качестве заголовков. Моя цель состояла в том, чтобы использовать первую строку в качестве заголовков.
Насколько я понимаю, это то, что var Records = MiniExcel.Query(fileName).ToList(); должен делать, но это не так.
Это ошибка или я делаю что-то не так?
Извините, если я слишком многословен но я довольно новичок в C#, буду благодарен за любую помощь.
Это то, что я пытался: в использовании есть использование MiniExcelLibs;. р>

Код: Выделить всё

private void FillRecords(string fileName, int noRecords)
{
var records = MiniExcel.Query(fileName).ToList();
int countRecs = 0;
foreach (var record in records)
{
int rowIndex = testDataGridView.Rows.Add();
testDataGridView.Rows[rowIndex].Cells["CountryName"].Value = record["name"];
testDataGridView.Rows[rowIndex].Cells["Alpha3"].Value = record["alpha-3"];
testDataGridView.Rows[rowIndex].Cells["Alpha2"].Value = record["alpha-2"];
testDataGridView.Rows[rowIndex].Cells["CountryCode"].Value = record["country-code"];
testDataGridView.Rows[rowIndex].Cells["CountryRegion"].Value = record["region"];
testDataGridView.Rows[rowIndex].Cells["SubRegion"].Value = record["sub-region"];
testDataGridView.Rows[rowIndex].Cells["IntermediateRegion"].Value = record["intermediate-region"];
testDataGridView.Rows[rowIndex].Cells["RegionCode"].Value = record["region-code"];
testDataGridView.Rows[rowIndex].Cells["SubRegionCode"].Value = record["sub-region-code"];
testDataGridView.Rows[rowIndex].Cells["IntermediateRegionCode"].Value = record["intermediate-region-code"];
countRecs++;
if (noRecords > 0 && countRecs >= noRecords) return;
}
}
Я ожидал сетку со странами и подробностями.
Я изменил ее на эту, но она не совсем идеальна, как мне хотелось бы знать на какие столбцы я ссылаюсь, если лист Excel меняет порядок или содержимое.

Код: Выделить всё

private void FillRecords(string fileName, int noRecords)
{
var records = MiniExcel.Query(fileName).ToList();
int countRecs = 0;
foreach (var record in records)
{
var dict = (IDictionary)record;
/*foreach (var key in dict.Keys)
{
testListBox.Items.Add($"Header: {key}");
}*/
if (countRecs > 0)
{
int rowIndex = testDataGridView.Rows.Add();
testDataGridView.Rows[rowIndex].Cells["CountryName"].Value = dict["A"];
testDataGridView.Rows[rowIndex].Cells["Alpha3"].Value = dict["C"];
testDataGridView.Rows[rowIndex].Cells["Alpha2"].Value = dict["B"];
testDataGridView.Rows[rowIndex].Cells["CountryCode"].Value = dict["D"];
testDataGridView.Rows[rowIndex].Cells["CountryRegion"].Value = dict["F"];
testDataGridView.Rows[rowIndex].Cells["SubRegion"].Value = dict["G"];
testDataGridView.Rows[rowIndex].Cells["IntermediateRegion"].Value = dict["H"];
testDataGridView.Rows[rowIndex].Cells["RegionCode"].Value = dict["I"];
testDataGridView.Rows[rowIndex].Cells["SubRegionCode"].Value = dict["J"];
testDataGridView.Rows[rowIndex].Cells["IntermediateRegionCode"].Value = dict["K"];
}
countRecs++;
if (noRecords > 0 && countRecs >= noRecords) return;
}
}
Это работает, но первая строка (которая должна была быть заголовком) становится частью моих данных, поэтому мне приходится подстраиваться под нее.

Подробнее здесь: https://stackoverflow.com/questions/790 ... hing-wrong
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»