Добавить проверку ко всему столбцу

В моем текущем проекте мне нужно создать файл excel с проверкой списка для всего столбца. Поиск в Google дал следующие два результата:

http://www.aspose.com/docs/display/cellsnet/Working+with+Validations+in+Columns
Это относится к aspose.cells.griddesktop, у которого на самом деле есть свойство worksheet.Columns[n].Validations. Aspose.Cells — нет.

http://www.aspose.com/docs/display/cellsjava/Data+Filtering+and+Validation Во всех примерах используется CellArea, для которого требуется начальная и конечная строки.

Что-нибудь я пропустил?


person Boris Callens    schedule 08.09.2015    source источник


Ответы (2)


Существует два типа форматов Excel. Один — более старый формат XLS, а другой — более новый формат XLSX. Количество строк внутри столбца в формате XLS — 65536, а в формате XLSX — 1048576. Таким образом, вы можете использовать два приведенных выше значения, чтобы покрыть весь столбец в CellArea.

Вы также можете использовать статический метод CellArea.CreateCellArea(), чтобы легко создать объект области ячейки.

Для формата XLS следующий код CellArea охватывает весь столбец A.

CellArea ca = CellArea.CreateCellArea("A1", "A65536");

Для формата XLSX следующий код CellArea охватывает весь столбец A.

CellArea ca = CellArea.CreateCellArea("A1", "A1048576");

Примечание. Я работаю разработчиком-евангелистом в Aspose

person shakeel    schedule 08.09.2015
comment
Можете ли вы прокомментировать, почему метод и API отличаются для griddesktop? Это техническое ограничение? - person Boris Callens; 09.09.2015
comment
Да, это техническое ограничение. Также API GridDesktop постоянно совершенствуется, и мы пытаемся сделать его похожим на Aspose.Cells. Может потребоваться несколько месяцев, чтобы привести их в соответствие с Aspose.Cells. - person shakeel; 09.09.2015
comment
@shakeel Было бы неплохо, если бы библиотека предоставила это значение (65536 или 1048576) через свойство. Скажем: workbook.MaxSheetRowsNumber. Просто идея... ;) - person user2173353; 20.06.2018
comment
@ user2173353, я думаю, это разумно, поэтому я зарегистрировал для этого билет. Это CELLSNET-46185. Как только у нас будут новости для вас, мы сообщим вам как можно скорее. - person shakeel; 20.06.2018
comment
@BorisCallens, есть еще один способ охватить всю колонку, он обсуждается в моем втором ответе. Вы можете проверить это. Спасибо. - person shakeel; 20.06.2018
comment
Мы добавили свойства WorkbookSettings.MaxRow и WorkbookSettings.MaxColumn в следующей версии, т.е. 18.7 — выпуск от июля 2018 года. Спасибо. - person shakeel; 21.06.2018
comment
Hot FIx можно скачать по этим ссылкам. ---- dropbox.com/s/uhjk63d52fii4vj/ ---- dropbox.com/s/bb37pu35myn5pu5/ ---- dropbox.com/s/rke1muvzhrow2xi/ --- Спасибо. - person shakeel; 22.06.2018

Вот еще один способ покрыть всю колонку.

// Cover entire column A
CellArea ca = CellArea.CreateCellArea("A", "A");

Это будет работать как с форматом XLS, так и с XLSX.

Пожалуйста, просмотрите следующий пример кода, выполните его на своем конце, а также прочитайте его комментарии. Вы получите два выходных файла Excel. Один в формате XLS, другой в формате XLSX.

Теперь введите 200 (или любое значение больше 100) в эти ячейки, и вы получите ошибку проверки.

  • A65536
  • A1048576

С#

// Create workbook
Workbook workbook = new Workbook();

// Accessing the Validations collection of the worksheet
ValidationCollection validations = workbook.Worksheets[0].Validations;

// Cover entire column A
CellArea ca = CellArea.CreateCellArea("A", "A");

// Creating a Validation object
Validation validation = validations[validations.Add(ca)];

// Setting the validation type to whole number
validation.Type = ValidationType.WholeNumber;

// Setting the operator for validation to Between
validation.Operator = OperatorType.Between;

// Setting the minimum value for the validation
validation.Formula1 = "10";

// Setting the maximum value for the validation
validation.Formula2 = "100";

// Save in XLS format
workbook.Save("output.xls", SaveFormat.Excel97To2003);

// Remove the area of validation and add it again
validation.RemoveArea(ca);
validation.AddArea(ca);

// Save in XLSX format
workbook.Save("output.xlsx");

Примечание. Я работаю советником разработчиков в Aspose

person shakeel    schedule 20.06.2018