Я импортирую excel с помощью c#, но хочу импортировать вторую страницу

Я использую библиотеку microsoft.excel.

Я не могу использовать первую страницу excel, я работаю только со второй страницей. Как я могу установить количество страниц.

это мой код.

 excelFile.SaveAs(path);

 Excel.Application application = new Excel.Application();
 Excel.Workbook workbook = application.Workbooks.Open(path);
 Excel.Worksheet worksheet = workbook.ActiveSheet;
 Excel.Range range = worksheet.UsedRange;

 for (int i = 3; i <= range.Rows.Count; i++)
 {
      Google lm = new Google();

      lm.Default_channel_grouping = ((Excel.Range)range.Cells[i, 1]).Text;
      lm.MonthOfYear = ((Excel.Range)range.Cells[i, 2]).Text;
      lm.Date = ((Excel.Range)range.Cells[i, 3]).Text;
      lm.Segment = ((Excel.Range)range.Cells[i, 4]).Text;
      lm.Users = ((Excel.Range)range.Cells[i, 5]).Text;
      lm.NewUsers = ((Excel.Range)range.Cells[i, 6]).Text;
      lm.Ecommerce = ((Excel.Range)range.Cells[i, 7]).Text;
      lm.Transactions = ((Excel.Range)range.Cells[i, 7]).Text;
      lm.Revenue = ((Excel.Range)range.Cells[i, 7]).Text;

      sdb.Google.Add(lm);
      sdb.SaveChanges();
 }

В Excel нет страниц, есть листы. Ваш код не импортирует файл Excel, он запускает Excel и считывает ячейки одну за другой как текст. Это означает, что даты и числа будут считываться как строки, требующие анализа. Было бы лучше использовать библиотеку, например, ExcelDataReader для прямой загрузки файлов Excel. Вы можете импортировать данные через SqlBulkCopy прямо в базу данных, а не через EF.

Panagiotis Kanavos 15.12.2020 07:55

Кстати, запуск Excel на сервере - очень плохая идея. 1) вам нужна лицензия для каждого конечного пользователя 2) если вы не будете очень осторожны, ваш код будет продолжать запускать экземпляры Excel, пока на сервере не закончится память

Panagiotis Kanavos 15.12.2020 07:57

İşlemleri kendim yapacağım. Bu yüzden sorun çıkmayacak. Sadece işimi kolaylaştırmak istiyorum. Бир сорун олур му?

Ömer Özdemir 15.12.2020 09:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить количество листов (я полагаю, это то, что вы имеете в виду под страницами), обратившись к свойству Sheets рабочей книги:

 Excel.Application application = new Excel.Application();
 Excel.Workbook workbook = application.Workbooks.Open(path);
 var sheets = workbook.Sheets.Count;

Для работы с любым листом в коллекции (в вашем случае i = 2)

workbook.Sheets[i]

Чтобы добавить лист и сделать его активным, используйте Sheets.Add

Чтобы выбрать рабочий лист как активный:

((Excel.Worksheet)workbook.Sheets[1]).Select();

Можете ли вы помочь мне еще немного. Я немного новичок. Я добавил ваши коды, но он по-прежнему работает сначала на странице. for (int i = 3; i <= range.Rows.Count; i++) { Google lm = new Google(); ((Excel.Worksheet)workbook.Sheets[2]).Select(); lm.Default_channel_grouping = ((Excel.Range)range.Cells[i, 1]).Text; sdb.Google.Добавить(lm); sdb.Сохранить изменения(); }

Ömer Özdemir 15.12.2020 09:41

Другие вопросы по теме