Bazaprogram.ru

Новости из мира ПК
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Npoi c excel

Блог о быдло разработке программного обеспечения

Блог о разработке программного обеспечения на java, Delphi, С# и баз данных.

понедельник, 16 марта 2015 г.

NPOI пример использования

Теперь напишем код по выгрузке данных в Excel файл.

15 комментариев:

Этот код не скомпилится, если не сделать ещё три юзинга:
using System.IO;
using System.Diagnostics;
using NPOI.SS.UserModel;

Добавлю ещё: класс XSSF — это только один из классов в библиотеке (отвечает за формат xlsx, насколько я понял). Но вообще-то это может и не сработать, т.к. зависит от используемой версии офиса (тестировал на excel 2007 — работает через пень-колоду, на этой версии лучше работает HSSF).
Так что рекомендую работать с интерфейсом ISheet, от которого унаследованы все эти классы, а полиморфизм всё сделает за нас.

А можно что то подобное для открытия файла xls?

Лучше использовать интерфейс для работы как-то так
<
//Книга Excel
IWorkbook workbook;

//Открываем файл
using (FileStream file = new FileStream(tbLoadFile.Text, FileMode.Open, FileAccess.Read))
<
workbook = WorkbookFactory.Create(inputStream);
>
//Получаем первый лист книги
ISheet sheet = workbook.GetSheetAt(0);

//запускаем цикл по строкам
for (int row = 0; row Удалить

А где можно посмотреть описания свойств и методов библиотеки NPOI?
А то, например, как задать стили границ ячеек, или цвет и толщину линий таблицы, форматы ячеек как устанавливать и прочие моменты форматирвоания пока не очень понятны.

На сколько я знаю NPOI порт java библиотеки POI доки по ней https://poi.apache.org/apidocs/index.html. Есть еще блог разработчика http://www.leniel.net/2014/01/npoi-2.0-major-features-enhancements-series-of-posts-scheduled.html, на кодеплексе http://npoi.codeplex.com/ и на гидхабе https://github.com/tonyqus/npoi и еще nuget https://www.nuget.org/packages/NPOI/2.0.6

Ого сколько сразу источников! Спасибо! Буду изучать.

Привет, а не подскажете AutoSizeColumn() падает при 10 000 строк. Как сделать автосайз для большиого кол-во строк.

Привет, не сталкивался с таким, знаю AutoSizeColumn() он тормозной, там рассчитывается размер текста все зависит от шрифта, его нужно вызывать единожды после формирования всего документа. Возможно слишким долго просто выполняется.

Добрый день! Так я пока и не разобрался как сделать, например, границы таблицы (и шапки таблицы) толще, и как в ячейках можно устанавливать жирный шрифт, или курсив, размер шрифта. Подскажите пожалуйста об этом, если работали с такими функциями в NPOI. Заранее спасибо!

//Рабочая книга Excel
HSSFWorkbook wb;
//Создаем рабочую книгу
wb = new HSSFWorkbook();
//Лист в книге Excel
HSSFSheet sh;
//диапазон ячеек
CellRangeAddress cellRange;
//создаем столбец
HSSFRow currentRow = (HSSFRow)sh.CreateRow(currentRowNum);
//Создаем ячейку
HSSFCell currentCell = (HSSFCell)currentRow.CreateCell(i);
//задаем значение в ячейке
currentCell.SetCellValue(«Hellow world»);
//Свойства ячейки можно задать через CellStyle
//подробнее он описан
//https://github.com/tonyqus/npoi/blob/master/main/HSSF/UserModel/HSSFCellStyle.cs
//в данном случае устанавливаем перенос строк
currentCell.CellStyle.WrapText = true;

//Создаем диапазон, в данном случае из одной ячейки
cellRange = new CellRangeAddress(currentCell.RowIndex, currentCell.RowIndex, currentCell.ColumnIndex, currentCell.ColumnIndex);

//Задаем рамку ячейки в данном примере Thin это тонкая обводка
// все варианты границ https://github.com/tonyqus/npoi/blob/master/main/SS/UserModel/BorderStyle.cs HSSFRegionUtil.SetBorderBottom(NPOI.SS.UserModel.BorderStyle.Thin, cellRange, sh, wb);
HSSFRegionUtil.SetBorderTop(NPOI.SS.UserModel.BorderStyle.Thin, cellRange, sh, wb);
HSSFRegionUtil.SetBorderRight(NPOI.SS.UserModel.BorderStyle.Thin, cellRange, sh, wb);
HSSFRegionUtil.SetBorderLeft(NPOI.SS.UserModel.BorderStyle.Thin, cellRange, sh, wb);

Читать еще:  Перекрестные ссылки в excel

Большое спасибо, помогло!
Вот только это работает для XLS, а для XLSX аналога HSSFRegionUtil я что-то не нашел. Аналогичного «XSSFRegionUtil» не существует. Не подскажите какая функция для xlsx в этом случае подходит?

Кстати, добавлю ещё один полезный ресурс по описанию функций библиотеки NPOI. Случайно сам наткнулся, в процессе поисков:
www.nudoq.org/#!/Packages/NPOI/NPOI/

По хорошему нужно перейти к интерфейсам из пакета npoi/main/SS/UserModel/ https://github.com/tonyqus/npoi/tree/master/main/SS/UserModel, как тут советовал анонимный в первых 2-х коментариях, а потом по аналогии с java кодом https://poi.apache.org/spreadsheet/quick-guide.html#Borders

Спасибо! Буду разбираться.
А я пока нашел другой способ, но там работа с каждой ячейкой, а не с диапазоном. Диапазон пока нашел, но в общем-то для моего случая установка стиля границ для всех (каждой) ячеек, даже лучше выглядит. Так, что ещё раз спасибо за ценную информацию!

Редактирование ячеек Excel с NPOI

И вроде бы у CellStyle есть свойства для изменения стиля границ, но я что не пишу, результата не вижу. Видимо я просто неправильно этим пользуюсь. Так как надо?
P.S. А вот изменение ширины столбца я вообще не нашёл =(

Добавлено через 2 часа 10 минут
Буквально методом тыка удалось сделать границу ячейки прозрачной:

26.02.2019, 13:39

Не получается записать в Excel-файл данные через NPOI
Здравствуйте, форумчане. Помогите решить проблему — не получается записать в Ексель-файл данные.

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

Редактирование ячеек DataGridView
Доброго времени суток. Есть DataGridView со столбцом типа DataGridViewComboBoxColumn (ComboBox).

Редактирование таблицы в Word, объединение ячеек
Привет всем! Объясните, пожалуйста, магию, которая здесь происходит: int x = 0; .

28.02.2019, 12:52 [ТС]204.03.2019, 13:32 [ТС]304.03.2019, 13:49404.03.2019, 14:13 [ТС]504.03.2019, 14:17604.03.2019, 14:18 [ТС]704.03.2019, 14:538

Извиняюсь. Не заметил, у вас в начальном примере так и было. Значит там не null?

Тогда есть ещё вариант с тем как вы файл сохраняете. Как WB от/закрывается, как стрим от/закрывается. А в диагностике есть увеличение памяти при выполнении сохранения?

Добавлено через 5 минут
Ещё варианты:
1) вот такой вызов:

возможно в моём примере старая версия и другие неймспейсы.

Если работает, то
2) создайте нужное количество стилей. Например boldFont, topAlignAndBoldFont и т.п. И используйте их для стиля ячейки. То есть не создавайте новых стилей для каждой ячейки — это увеличивает потери памяти из-за обилия объектов стилей.

04.03.2019, 15:32 [ТС]904.03.2019, 16:0610
04.03.2019, 16:06
04.03.2019, 16:06

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

NPOI добавление значение в ячейку
Ребят, как сделать так что бы некий текст записовался в конкретную ячейку екслель файла? Не могу.

Копирование ячеек Excel
Доброго дня, столкнулся с проблемой, не могу понять почему выпадает исключение, собственно есть.

Форматирование ячеек Excel
Добрый день! Подскажите, как программно форматировать данные в ячейках Excel? Интересует заливка.

Чтение и редактирование файлов Excel
Добрый вечер. Никогда не работал с внешними файлами формата Excel и в голове трудно усваивается.

Функция ПРОСМОТРX

Функция кслукуп используется, если нужно найти элементы в таблице или диапазоне по строке. Например, обратите внимание на стоимость самой автомобильной части по номеру детали или найдите имя сотрудника на основе его кода сотрудника. С помощью КСЛУКУП можно просмотреть один столбец для условия поиска и вернуть результат из той же строки в другом столбце, независимо от того, где находится возвращаемый столбец.

Примечание: В настоящее время эта функция доступна для Office 365 подписчикам в месячном канале. Он будет доступен для Office 365 подписчикам на полугодовой канал, начиная с 2020 июля. Дополнительные сведения о том, как развертываются функции для Office 365 ных подписчиков, приведены в разделе о том, когда я могу получить новейшие функции для Office 365.

Функция КСЛУКУП выполняет поиск в диапазоне или массиве и возвращает элемент, соответствующий первому найденному совпадению. Если совпадение не существует, КСЛУКУП может вернуть ближайшее (приближенное) соответствие.

= КСЛУКУП (lookup_value; lookup_array; return_array; [if_not_found]; [match_mode]; [search_mode])

Массив или диапазон для поиска

Массив или диапазон, который нужно вернуть.

Если действительное совпадение не найдено, возвращайте введенный текст [if_not_found].

Если допустимое совпадение не найдено, а не отображается [if_not_found], будет возвращен #N/A.

Укажите тип соответствия:

0 — точное совпадение. Если ничего не найдено, возвратите #N/А. Этот параметр используется по умолчанию.

-1-точное соответствие. Если ничего не найдено, возвратите следующий меньший элемент.

1 — точное совпадение. Если ничего не найдено, возвратите следующий более крупный элемент.

2. соответствие подстановочных знаков, в котором знаки *,? и

Укажите используемый режим поиска:

1. выполните поиск, начиная с первого элемента. Этот параметр используется по умолчанию.

-1-выполнение обратного поиска, начиная с последнего элемента.

2. Выполните двоичный поиск, который основывается на lookup_array сортируются в возрастающем порядке. Если не отсортировано, будут возвращены недопустимые результаты.

-2-Выполнение двоичного поиска, который основывается на lookup_array сортируются в порядке убывания . Если не отсортировано, будут возвращены недопустимые результаты.

Примеры

Пример 1

В этом примере показан предыдущий видеоролик и используется простой КСЛУКУП, чтобы найти название страны, а затем вернуть телефонный код страны. Она включает только lookup_value (ячейку F2), lookup_array (диапазон B2: B11) и return_array (диапазон D2: D11). Он не включает аргумент match_mode, так как КСЛУКУП по умолчанию имеет точное соответствие.

Примечание: КСЛУКУП отличается от функции ВПР в том, что использует отдельные массивы уточняющих запросов и возвращаемых значений, где функция ВПР использует один массив таблиц, за которым следует порядковый номер столбца. В данном случае эквивалентной формуле ВПР будет: = ВПР (F2; B2: D11; 3; ложь)

Пример 2

В этом примере мы ищем сведения о сотрудниках на основе ИДЕНТИФИКАЦИОНного номера сотрудника. В отличие от функции ВПР, КСЛУКУП может возвращать массив с несколькими элементами, что позволяет одной формуле возвращать как имя сотрудника, так и отдел из ячеек C5: D14.

Пример 3

В этом примере добавляется аргумент if_not_found в приведенный выше пример.

Пример 4

В следующем примере отображается столбец C для личного дохода, введенного в ячейку E2, и поиск соответствующей налоговой ставки в столбце B. Он задает аргумент если-not_found, чтобы возвращать 0, если ничего не найдено. Для аргумента match_mode задано значение 1, что означает, что функция будет искать точное совпадение и, если она не может найти, будет возвращать следующий больший элемент. Наконец, аргумент search_mode имеет значение 1, что означает, что функция будет выполнять поиск с первого элемента до последнего.

Примечание: В отличие от функции ВПР столбец lookup_array находится справа от столбца return_array, где функция ВПР может выглядеть только слева направо.

Пример 5

Далее мы будем использовать вложенную функцию КСЛУКУП для выполнения поиска по вертикали и по горизонтали. В этом случае сначала начнется поиск валовой прибыли в столбце B, затем найти Qtr1 в верхней строке таблицы (диапазон C5: F5) и вернуть значение на пересечении двух значений. Это похоже на использование функций индекс и ПОИСКПОЗ вместе. Вы также можете использовать КСЛУКУП, чтобы заменить функцию ГПР .

Формула в ячейках D3: F3 имеет значение: = КСЛУКУП (D2; $B 6: $B 17; КСЛУКУП ($C 3) $C 5: $G 5, $C 6: $G 17)).

Пример 6

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

Формула в ячейке E3 имеет следующее значение: = SUM (КСЛУКУП (B3; B6: B10; E6: E10): КСЛУКУП (C3, B6: B10, E6: E10))

Как это работает? КСЛУКУП возвращает диапазон, поэтому при вычислении формула будет выглядеть следующим образом: = SUM ($E $7: $E $9). Вы можете узнать, как это работает самостоятельно, выделив ячейку с формулой КСЛУКУП, аналогичную этой, а затем перейти к формулам > Зависимости формул > вычисленииформулы и нажать кнопку оценить для пошагового вычисления.

Примечание: Благодаря специалистам по Microsoft Excel MVP, Билл джилена, мы предлагаем этот пример.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

См. также

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Ссылка на основную публикацию
Adblock
detector