Це зображення має порожній атрибут alt; його ім'я файлу asposecells-for-java-e1558954178996.jpg

Випущено Aspose.Cells for Java v19.11, який містить багато нових функцій і оновлень. Обробку зведених таблиць покращено завдяки сортуванню та приховуванню даних на основі певних критеріїв для отримання компактної інформації для звітів і презентацій. Тепер доступно читання та запис у таблиці за допомогою QueryTable як джерела даних. Це не кінець цього випуску, а початок довгого списку нових функцій, таких як зміна існуючої перевірки шляхом додавання CellArea, отримання інформації про з’єднання OData та отримання ширини тексту значення комірки для кращих макетів. Усі деталі цього випуску можна знайти в примітках до випуску, які публікуються з кожним новим випуском. Давайте по черзі розглянемо ці нові захоплюючі функції.

Сортування та приховання даних у зведеній таблиці Excel за допомогою Java

Бувають випадки, коли потрібна чітка інформація у зведеній таблиці. Нам можуть знадобитися деякі функції для сортування даних у зведеній таблиці, а потім приховування рядків за певними критеріями. Наступний приклад коду демонструє цю функцію

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-Java
// Шлях до вихідного каталогу.
String sourceDir = Utils.Get_SourceDirectory();
String outputDir = Utils.Get_OutputDirectory();

Workbook workbook = new Workbook(sourceDir + "PivotTableHideAndSortSample.xlsx");

Worksheet worksheet = workbook.getWorksheets().get(0);

PivotTable pivotTable = worksheet.getPivotTables().get(0);
CellArea dataBodyRange = pivotTable.getDataBodyRange();
int currentRow = 3;
int rowsUsed = dataBodyRange.EndRow;

// Сортування балів за спаданням
PivotField field = pivotTable.getRowFields().get(0);
field.setAutoSort(true);
field.setAscendSort(false);
field.setAutoSortField(0);

pivotTable.refreshData();
pivotTable.calculateData();

// Приховування рядків із оцінкою менше 60
while (currentRow < rowsUsed)
{
	Cell cell = worksheet.getCells().get(currentRow, 1);
	double score = (double) cell.getValue();
	if (score < 60)
	{
		worksheet.getCells().hideRow(currentRow);
	}
	currentRow++;
}

pivotTable.refreshData();
pivotTable.calculateData();

// Збереження файлу Excel
workbook.save(outputDir + "PivotTableHideAndSort_out.xlsx");

На наступному зображенні показано зведену таблицю до та після виконання цього коду на зразку даних.

Перегляньте наступну статтю, щоб отримати додаткові відомості та зразки файлів.

Читання та запис таблиці з джерелом даних таблиці запиту

Таблиці, що містять таблицю запиту як джерело даних, дуже поширені. Ми можемо вимагати прочитати такі таблиці та змінити їх, наприклад, показати загальну суму тощо. Раніше ця функція була доступна, але підтримується файл XLS. Ось приклад коду, який читає таблицю, а потім змінює її, щоб показати загальну суму в кінці.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-Java
// Шлях до вихідного каталогу.
String sourceDir = Utils.Get_SourceDirectory();
String outputDir = Utils.Get_OutputDirectory();

// Завантажити об'єкт книги
Workbook workbook = new Workbook(sourceDir + "SampleTableWithQueryTable.xls");

Worksheet worksheet = workbook.getWorksheets().get(0);

ListObject table = worksheet.getListObjects().get(0);

// Перевірте тип джерела даних, якщо це таблиця запиту
if (table.getDataSourceType() == TableDataSourceType.QUERY_TABLE)
{
	table.setShowTotals(true);
}

// Збережіть файл
workbook.save(outputDir + "SampleTableWithQueryTable_out.xls");

На наступному зображенні показано, як працює функція setShowTotals():

Зразки файлів і додаткові відомості можна отримати в цій статті:

Отримати інформацію про підключення OData

OData можна використовувати для отримання каналу або даних з RESTful API, який також можна використовувати у файлі Excel. Цю інформацію можна отримати з файлу Excel за допомогою API Aspose.Cells за допомогою класу DataMashup Workbook. Отримайте потрібну інформацію з властивості PowerQueryFormulas, що містить PowerQueryFormula та PowerQueryFormulaItem.

Наведений нижче фрагмент коду демонструє використання цих класів для отримання інформації OData.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-Java
// Шлях до каталогів.
String sourceDir = Utils.Get_SourceDirectory();

Workbook workbook = new Workbook(sourceDir + "ODataSample.xlsx");
PowerQueryFormulaCollction PQFcoll = workbook.getDataMashup().getPowerQueryFormulas();
for (Object obj : PQFcoll)
{
    PowerQueryFormula PQF = (PowerQueryFormula)obj;
    System.out.println("Connection Name: " + PQF.getName());
    PowerQueryFormulaItemCollection PQFIcoll = PQF.getPowerQueryFormulaItems();
   for (Object obj2 : PQFIcoll)
    {
        PowerQueryFormulaItem PQFI = (PowerQueryFormulaItem)obj2;
        System.out.println("Name: " + PQFI.getName());
        System.out.println("Value: " + PQFI.getValue());
    }
}

На наступному зображенні показано зразок файлу, який використовується у наведеному вище прикладі коду для отримання інформації про підключення OData.

Ось результат програми за допомогою файлу зразка:

Ця стаття містить зразок файлу та додаткові відомості для перевірки цієї функції:

Додайте CellArea до існуючої перевірки

Припустімо, що у вас є файл Excel із перевіркою, який працює добре. Aspose.Cells завжди виконує перевірку, щоб переконатися, що область уже існує чи ні, коли область комірки додається до перевірки. Ви можете зіткнутися зі зниженням продуктивності під час цієї перевірки, якщо у вашому файлі Excel є велика кількість перевірок. Щоб вирішити цю проблему, потрібно налаштувати API, щоб отримати контроль над виконанням цієї перевірки. Validation.AddAreaCellArea cellArea, bool checkIntersection, bool checkEdge)) існує метод, щоб отримати цей елемент керування, оскільки параметр checkIntersection спрямовує API перевірити перетин цієї щойно доданої області з існуючими областями. Якщо встановити для цього параметра значення false, перевірку інших областей буде вимкнено. Якщо ви хочете перевірити застосовані області, установіть для параметра checkEdge значення true. Зауважте, що внутрішні параметри перебудовуються, якщо верхню ліву область скинути до нової області. Однак, якщо ви впевнені, що нова область не є верхньою лівою областю, тоді встановіть для властивості checkEdge значення false.

Ви можете спробувати наведений нижче зразок коду, який демонструє додавання нового CellArea до перевірки, яка вже існує у файлі Excel.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-Java
// Шлях до каталогів.
String sourceDir = Utils.Get_SourceDirectory();
String outputDir = Utils.Get_OutputDirectory();

Workbook workbook = new Workbook(sourceDir + "ValidationsSample.xlsx");

// Доступ до першого аркуша.
Worksheet worksheet = workbook.getWorksheets().get(0);

// Доступ до колекції перевірок робочого аркуша
Validation validation = worksheet.getValidations().get(0);

// Створіть свою зону клітини.
CellArea cellArea = CellArea.createCellArea("D5", "E7");

// Додавання області комірки до перевірки
validation.addArea(cellArea, false, false);

// Збережіть вихідну книгу.
workbook.save(outputDir + "ValidationsSample_out.xlsx");

Перегляньте наступну статтю, щоб отримати додаткові відомості та зразок файлу, щоб перевірити цю функцію.

Отримати ширину тексту значення клітинки

Кращий макет представлення даних є метою кожного розробника. Для цього потрібна підтримка в API для обчислення ширини комірки під час форматування звітів/презентацій. Щоб допомогти розробникам, Aspose.Cells надає функцію GetTextWidth() у класі CellsHelper. За допомогою цієї функції розробник отримає ширину тексту в клітинці на основі довжини та стилю тексту. Наступний зразок коду демонструє використання CellsHelper.GetTextWidth) шляхом отримання ширини тексту значення в клітинці.

Наступний приклад коду демонструє цю функцію:

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-Java
// Шлях до вихідного каталогу.
String sourceDir = Utils.Get_SourceDirectory();Workbook workbook = new Workbook(sourceDir + "GetTextWidthSample.xlsx");

System.out.println("Text width: " + CellsHelper.getTextWidth(workbook.getWorksheets().get(0).getCells().get("A1").getStringValue(), workbook.getDefaultStyle().getFont(), 1));

Ви можете завантажити файл зразка тут.

Інші вдосконалення

Нижче наведено кілька удосконалень і покращень, внесених у цей випуск:

  • Функцію Cells.importCSV покращено, щоб уникнути винятку “значення рядка не може перевищувати 255 символів”
  • Покращено продуктивність Cells.removeDupilcates для великого набору даних
  • Покращено відтворення радіального графіка в HTML
  • Більша точність додається до масштабування осі під час відтворення у форматі PNG
  • Внесено вдосконалення, щоб уникнути пошкодження після оновлення вихідних даних для зведеної таблиці.
  • Отримайте більш точний російський (спеціальний) формат виведення дати за допомогою цього випуску
  • LoadFilter зроблено безпомилково, щоб розглядати необхідний аркуш
  • Правильні рамки зберігаються під час перетворення файлу Excel на EMF
  • Покращено SheetRender, щоб забезпечити більш точний підрахунок сторінок
  • Покращено відтворення діаграми на зображенні. На вихідному зображенні ви отримаєте мітки даних того самого стилю та належних значень
  • Функцію Cell.setHtmlString() покращено для обробки гіперпосилань і тегів/сценаріїв HTML.

Нижче наведено кілька важливих ресурсів, на які можна посилатися під час тестування нового випуску: