Tento obrázek má prázdný atribut alt; jeho název souboru je asposecells-for-java-e1558954178996.jpg

Vychází Aspose.Cells for Java v19.11, která obsahuje mnoho nových funkcí a upgradů. Zpracování kontingenčních tabulek je vylepšeno tím, že poskytuje třídění a skrývání dat na základě určitých kritérií pro získání kompaktních informací pro sestavování a prezentace. Čtení a zápis do tabulek pomocí QueryTable jako zdroje dat je nyní k dispozici. Toto není konec této verze, ale začátek dlouhého seznamu nových funkcí, jako je úprava stávajícího ověření přidáním CellArea, načtení informací o připojení OData a získání šířky textu hodnoty buňky pro lepší rozvržení. Všechny podrobnosti o tomto vydání lze nalézt v poznámkách k vydání publikovaných s každým novým vydáním. Pojďme se na tyto nové vzrušující funkce podívat jednu po druhé.

Seřadit a skrýt data v kontingenční tabulce Excel pomocí Java

Existují případy, kdy jsou v kontingenční tabulce vyžadovány ostré informace. K řazení dat v kontingenční tabulce a následnému skrytí řádků podle určitých kritérií můžeme vyžadovat některé funkce. Následující ukázkový kód ukazuje tuto funkci

// Úplné příklady a datové soubory najdete na https://github.com/aspose-cells/Aspose.Cells-for-Java
// Cesta k výstupnímu adresáři.
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;

// Skóre řazení sestupně
PivotField field = pivotTable.getRowFields().get(0);
field.setAutoSort(true);
field.setAscendSort(false);
field.setAutoSortField(0);

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

// Skrytí řádků se skóre nižším než 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();

// Uložení souboru Excel
workbook.save(outputDir + "PivotTableHideAndSort_out.xlsx");

Následující obrázek ukazuje kontingenční tabulku před a po spuštění tohoto kódu na ukázkových datech.

Další informace a ukázkové soubory naleznete v následujícím článku.

Čtení a zápis tabulky se zdrojem dat tabulky dotazů

Tabulky, které mají jako zdroj dat tabulku dotazů, jsou velmi běžné. Můžeme vyžadovat, abychom si takové tabulky přečetli a upravili je, jako je zobrazení součtu atd. Dříve byla tato funkce dostupná, ale podpora pro soubor XLS je poskytována. Zde je příklad kódu, který přečte tabulku a poté ji změní tak, aby na konci zobrazila součet.

// Úplné příklady a datové soubory najdete na https://github.com/aspose-cells/Aspose.Cells-for-Java
// Cesta k výstupnímu adresáři.
String sourceDir = Utils.Get_SourceDirectory();
String outputDir = Utils.Get_OutputDirectory();

// Načíst objekt sešitu
Workbook workbook = new Workbook(sourceDir + "SampleTableWithQueryTable.xls");

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

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

// Zkontrolujte typ zdroje dat, pokud se jedná o tabulku dotazů
if (table.getDataSourceType() == TableDataSourceType.QUERY_TABLE)
{
	table.setShowTotals(true);
}

// Uložte soubor
workbook.save(outputDir + "SampleTableWithQueryTable_out.xls");

Následující obrázek ukazuje, jak funkce setShowTotals() funguje:

Vzorové soubory a další podrobnosti můžete získat v následujícím článku:

Načíst informace o připojení OData

OData lze použít k získání zdroje nebo dat z RESTful API, které lze použít také v souboru Excel. Tyto informace lze získat ze souboru aplikace Excel pomocí Aspose.Cells API pomocí třídy DataMashup Workbook. Získejte požadované informace z vlastnosti PowerQueryFormulas s PowerQueryFormula a PowerQueryFormulaItem.

Následující fragment kódu ukazuje použití těchto tříd k načtení informací OData.

// Úplné příklady a datové soubory najdete na https://github.com/aspose-cells/Aspose.Cells-for-Java
// Cesta k adresářům.
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());
    }
}

Následující obrázek ukazuje ukázkový soubor, který se používá ve výše uvedené ukázce kódu k načtení informací o připojení OData.

Zde je výstup programu pomocí ukázkového souboru:

Tento článek obsahuje ukázkový soubor a další podrobnosti ke kontrole této funkce:

Přidejte oblast CellArea do existujícího ověření

Předpokládejme, že máte soubor aplikace Excel, který má validace, který funguje dobře. Aspose.Cells vždy provádí kontrolu, aby ověřil, zda oblast již existuje nebo ne, kdykoli je oblast buněk přidána k ověření. Pokud je v souboru aplikace Excel velký počet ověření, můžete během této kontroly čelit snížení výkonu. Chcete-li tento problém vyřešit, je nutné nakonfigurovat rozhraní API, abyste získali kontrolu nad prováděním této kontroly. Metoda Validation.AddAreaCellArea cellArea, bool checkIntersection, bool checkEdge)) je zde k získání tohoto ovládacího prvku, protože parametr checkIntersection řídí API, aby zkontrolovalo průnik této nově přidané oblasti s existujícími oblastmi. Pokud tento parametr nastavíte na hodnotu false, kontrola ostatních oblastí bude zakázána. Pokud chcete zkontrolovat použité oblasti, nastavte parametr checkEdge na hodnotu true. Všimněte si, že vnitřní nastavení jsou znovu vytvořena, pokud je levá horní oblast resetována na novou oblast. Pokud jste si však jisti, že nová oblast není oblast vlevo nahoře, nastavte hodnotu vlastnosti checkEdge na false.

Můžete zkusit následující ukázkový kód, který demonstruje přidání nové CellArea do ověření, které již existuje v souboru aplikace Excel.

// Úplné příklady a datové soubory najdete na https://github.com/aspose-cells/Aspose.Cells-for-Java
// Cesta k adresářům.
String sourceDir = Utils.Get_SourceDirectory();
String outputDir = Utils.Get_OutputDirectory();

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

// Přístup k prvnímu listu.
Worksheet worksheet = workbook.getWorksheets().get(0);

// Přístup ke kolekci Validation listu
Validation validation = worksheet.getValidations().get(0);

// Vytvořte si oblast buněk.
CellArea cellArea = CellArea.createCellArea("D5", "E7");

// Přidání oblasti buňky do Ověření
validation.addArea(cellArea, false, false);

// Uložte výstupní sešit.
workbook.save(outputDir + "ValidationsSample_out.xlsx");

Podívejte se na následující článek, kde najdete další podrobnosti a ukázkový soubor k otestování této funkce.

Získejte šířku textu hodnoty buňky

Lepší rozložení prezentace dat je cílem každého vývojáře. Pro tuto podporu je vyžadována v API pro výpočet šířky buňky při formátování sestav/prezentací. Pro pomoc vývojářům poskytuje Aspose.Cells funkci GetTextWidth() ve třídě CellsHelper. Pomocí této funkce vývojář získá šířku textu v buňce na základě délky a stylu textu. Následující ukázkový kód ukazuje použití CellsHelper.GetTextWidth) získáním šířky textu hodnoty v buňce.

Následující ukázkový kód demonstruje tuto funkci:

// Úplné příklady a datové soubory najdete na https://github.com/aspose-cells/Aspose.Cells-for-Java
// Cesta k výstupnímu adresáři.
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));

Vzorový soubor si můžete stáhnout zde.

Další vylepšení

Následuje několik vylepšení a vylepšení, která jsou provedena v tomto vydání:

  • Funkce Cells.importCSV je vylepšena, aby se zabránilo výjimce „hodnota řetězce nesmí přesáhnout 255 znaků“
  • Zlepšení je provedeno ve výkonu Cells.removeDupilcates pro velkou datovou sadu
  • Vylepšeno vykreslování radiálních grafů do HTML
  • Větší přesnost je přidána ke změně měřítka osy během vykreslování do formátu PNG
  • Jsou provedena vylepšení, aby se zabránilo poškození po aktualizaci zdrojových dat pro kontingenční tabulku.
  • Získejte přesnější ruský (vlastní) výstup formátu data pomocí této verze
  • LoadFilter je vyroben bez chyb, aby zvážil požadovaný list
  • Při převodu souboru Excel do EMF jsou zachovány správné okraje
  • SheetRender byl vylepšen, aby poskytoval přesnější počet stránek
  • Vykreslení grafu do obrázku je vylepšeno. Ve výstupním obrazu získáte datové štítky se stejným stylem a správnými hodnotami
  • Funkce Cell.setHtmlString() byla vylepšena pro zpracování hypertextových odkazů a HTML tagů/skriptů.

Následuje několik důležitých zdrojů, na které lze při testování nového vydání odkazovat: