EPPLUS ExcelRange создает таблицу, начинающуюся с неправильной строки

#c# #excel #epplus

#c# #excel #epplus

Вопрос:

В C # я заполнил файл Excel данными. Теперь я хотел бы создать таблицу, начинающуюся с ячейки A2. Я использую приведенный ниже код для создания таблицы, но вместо создания таблицы, начинающейся с ячейки A2, таблица создается, начиная с ячейки A3

  using var package = new ExcelPackage(file);
           
            var ws = package.Workbook.Worksheets.Add(Name: "MainReport");

          
           var range = ws.Cells[Address: "A2"].LoadFromCollection(people, PrintHeaders: true);
            range.AutoFitColumns();

            //Formats Header row
            ws.Cells[Address: "A1"].Value = "My Data!";
            ws.Cells[Address: "A1:C1"].Merge = true;
            ws.Column(col: 1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
            ws.Row(row: 1).Style.Font.Size = 24;
            ws.Row(row: 1).Style.Font.Color.SetColor(Color.Pink);

            ws.Row(row: 2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
            ws.Row(row: 2).Style.Font.Bold = true;
            ws.Column(col: 3).Width = 20;
          
            //create a range for the table
            ExcelRange range_table = ws.Cells[2, 1, ws.Dimension.End.Row, ws.Dimension.End.Column];

            //add a table to the range
            ExcelTable tab = ws.Tables.Add(range_table, "Table1");

            //format the table
            tab.TableStyle = TableStyles.Medium2;
 

введите описание изображения здесь

Комментарии:

1. Я не понимаю, похоже, что таблица начинается с A2 для меня. Это скриншот «что вы хотите, чтобы произошло» или «что происходит»?

2. Если ваш вопрос: «как я могу избавиться от заголовков, чтобы данные начинались с A2», вы пробовали установить для заголовков значение false?

3. @CaiusJard когда я открываю диспетчер имен в Excel, в нем указано, что диапазон таблицы 1 составляет от A3 до C7. Так что это не включает заголовок. Также посмотрите на зеленую рамку на изображении выше. Она переходит от A3 к C7

4. Я все еще тебя не понимаю. Можете ли вы добавить скриншот, чтобы показать, как, по вашему мнению, он должен выглядеть?

Ответ №1:

Сам Excel работает так, что если вы выберете A2:C4 и создадите таблицу и скажете «не имеет заголовков», она добавит некоторые общие заголовки A2:C2 и переместит область данных (и данные, если таковые имеются) A2:C5 .

Если вы скажете «имеет заголовки», заголовки также будут определены в A2:C2 , но только данные A3:C4 .

Настоящий Excel, очевидно, делает некоторые предположения о том, присутствуют заголовки или нет, и предварительно устанавливает флажок для вас.

Как указано здесь, в документации API, нет флага, определяющего, присутствуют ли заголовки в диапазоне, поэтому не может быть никаких предположений, и можно предположить, что это «нет», и происходит сдвиг, как описано сверху.

Если вы примете это во внимание, вы сможете это решить.