Работа с управление на таблици

Работа с управление на таблици

Това ръководство показва как да създавате, зареждате, модифицирате и запазвате Excel работни книги с помощта на Aspose.Cells FOSS за Java. Ще научите как се работи с Workbook, WorksheetCollection, Worksheet, Cells, и Cell класове за управление на електронни таблици от край до край.


Създаване на нов работен справочник

Използвайте конструктора без аргументи, за да създадете празен работен лист. Един правен работният лист наречен Sheet1 се добавя автоматично.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
System.out.println("Sheet name: " + sheet.getName()); // Sheet1

Зареждане на работна книга от файл

Предайте път на файла към Workbook(fileName) конструктор да отвори съществуваща .xlsx или с други: .ods Файл.Потреби за използване Workbook(fileName, options) да доставят LoadOptions Когато имаш нужда. за контрол на откриването на формат или обработката на парола.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.LoadOptions;

// Simple load
Workbook workbook = new Workbook("data/report.xlsx");

// Load with explicit options
LoadOptions opts = new LoadOptions();
Workbook workbookWithOpts = new Workbook("data/report.xlsx", opts);

Зареждане на работна книга от поток

Workbook(stream) и в) Workbook(stream, options) да приеме всякакви java.io.InputStream. Това е полезно, когато файлът идва от мрежов ресурс, база данни BLOB или в-паметен байт масив.

import com.aspose.cells.foss.Workbook;
import java.io.FileInputStream;
import java.io.InputStream;

try (InputStream is = new FileInputStream("data/template.xlsx")) {
    Workbook workbook = new Workbook(is);
    System.out.println("Worksheets: " + workbook.getWorksheets().getCount());
}

Достъп до работни листове и управление на тях

Workbook.getWorksheets() връща a WorksheetCollection.Извличане на листове по индекс или по име, итерация върху всички листа и добавяне или премахване на листове при необходимост.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();

// Access by index
Worksheet first = sheets.get(0);
System.out.println(first.getName()); // Sheet1

// Add a named sheet
int idx = sheets.add("Summary");
Worksheet summary = sheets.get(idx);
summary.setName("Summary");

// Iterate all sheets
for (Worksheet ws : sheets) {
    System.out.println("Sheet: " + ws.getName());
}

// Remove a sheet by name
sheets.removeAt("Sheet1");
System.out.println("Remaining sheets: " + sheets.getCount());

Чете и пише стойности на клетките

Навигация към клетка с помощта на: Worksheet.getCells(), което връща a Cells Събиране. Извличане на Cell по име (напр. "A1") или по индекс на ред/колона, базиран на нула. putValue() да се запишат примитивни стойности и getValue() / getStringValue() да четеш - Да ги върнем.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Worksheet;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
Cells cells = sheet.getCells();

// Write values
cells.get("A1").putValue("Product");
cells.get("B1").putValue("Units Sold");

// Write by row/column index (0-based)
Cell a2 = cells.get(1, 0);
a2.putValue("Widget A");

Cell b2 = cells.get(1, 1);
b2.putValue(1200);

// Read back
System.out.println(a2.getStringValue()); // Widget A
System.out.println(b2.getValue());       // 1200

Настройка на формули за клетки

Присвояване на ред формули към клетка чрез: setFormula(). Aspose.Cells оценява формули когато работният лист е запазен или изчисляването се активира изрично.

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Cells cells = sheets.get(0).getCells();

cells.get("A1").putValue(100);
cells.get("A2").putValue(200);

Cell a3 = cells.get("A3");
a3.setFormula("=SUM(A1:A2)");
System.out.println("Formula: " + a3.getFormula()); // =SUM(A1:A2)

Записване на учебник

Използване на: Workbook.save(fileName) форматът на изхода е: определя се от разширението на файла; използване .xlsx за работните книги на Excel.

import com.aspose.cells.foss.Workbook;

Workbook workbook = new Workbook();
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello");

// Save to file -- format inferred from .xlsx extension
workbook.save("output/result.xlsx");

Освобождаване на ресурси

Workbook инструменти за изпълнение на задачи AutoCloseable.Използвайте блок за опити с ресурси, за да гарантирате, че вътрешните ресурси на работната книга се освобождават незабавно след използване.

import com.aspose.cells.foss.Workbook;

try (Workbook workbook = new Workbook("data/large.xlsx")) {
    workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automatically

Съвети и най-добри практики

  • Винаги използвайте ресурсите, които се опитват (try (Workbook wb = new Workbook(...))) за големи предприятия файлове, за да се избегне държането на отворени ръкавици.
  • Препоръчвам: cells.get(row, column) Преминаване cells.get(cellName) в горещи вериги; Претоварване на цели числа избягва повтарящото се анализиране на имената на клетките.
  • Обади се. workbook.getWorksheets().getCount() преди да се достъпят листовки по индекс, за да избегне IndexOutOfBoundsException.
  • Опишете изрично листата си с: setName() след това add() така че кодът в по-долу може да бъде: Търсете ги по име, а не от крехкия индекс.
  • Не разчитайте на резултатите от формулата веднага след приема. setFormula(); спасява първо или Презареждане, ако имате нужда от изчислителни стойности в същата сесия.

Общи проблеми

ИзданиеПричина за товаРемонтиране
WorkbookLoadException на 1 януари new Workbook(fileName)Път на файла не е верен или файлът е блокиран.Проверете дали пътеката съществува и е четлива; затворете други приложения, съдържащи файла
get(index) хвърляне на пръст IndexOutOfBoundsExceptionИндекс на листата отвъд getCount() - 1Проверка. sheets.getCount() преди достъп; използване на add() да създадете нов лист
Формула на клетката се връща празно getValue()Формули, които не се изчисляват автоматично в паметтаЗапазете работната книга и я презаредете, за да получите резултати от формулата.
Изходният файл е повреден след: save()Неправилно разширение на файлаУверете се, че името на файла завършва с: .xlsx; форматът се извлича от разширението

FAQ

Как да преименувам работен лист?

Вземете си… Worksheet обект по индекс от WorksheetCollection и се обади. setName(name) с новото име за показване:

workbook.getWorksheets().get(0).setName("Sales Data");

Как да проверя колко листа има в работната книга?

Обади се. getCount() в член 1 от Регламент (ЕО) No WorksheetCollection връщане от: Workbook.getWorksheets() за да се получи общият брой на работните листа:

int count = workbook.getWorksheets().getCount();

Мога ли да добавя няколко листа в едно обаждане?

Не, обади се. worksheets.add(sheetName) Всяко повикване връща индекса на новосъздаден лист.

Как да проверя типа на стойността в клетката?

Вземете си… Cell по име и призвание. getType(), което връща a CellValueType стойност на enum:

Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum value

Снимка на API референтна информация

Клас / методОписание на състоянието
Workbook()Създава празен работен лист с един празнен лист
Workbook(fileName)Зарежда работна книга от пътека за файлове
Workbook(stream)Зарежда работна книга от InputStream
Workbook(fileName, options)Зарежда работна книга с: LoadOptions
Workbook.getWorksheets()Връща се: WorksheetCollection
Workbook.save(fileName)Съхранява в файл (формата, извлечен от разширението)
Workbook.save(stream, format)Съхранява към поток с изрично SaveFormat
WorksheetCollection.get(index)Лист за отчитане по индекс на нулева основа
WorksheetCollection.get(name)Завръщане на листа по име
WorksheetCollection.add(sheetName)Добавя имена листа; връща индекса й
WorksheetCollection.getCount()Броят на листата в работния книжок
WorksheetCollection.removeAt(sheetName)Изтрива лист по име
Worksheet.getCells()Връща се: Cells събиране за този лист
Worksheet.getName() / setName()Получава или определя името на раздела за листата
Cells.get(cellName)Връща a Cell по име (напр. “A1”)
Cells.get(row, column)Връща a Cell по ред/колона на база нула
Cell.putValue(value)Записва стойност в клетката.
Cell.getValue()Чита стойността на клетката като: Object
Cell.getStringValue()Чете стойността на клетката като: String
Cell.setFormula(formula)Определя формула (например “=SUM(A1:A2)”)
LoadOptionsКонфигурация за зареждане на работната книга
SaveFormatБроят на константите за формат (формата се изчислява от разширението на файла; не е прехвърлен към save())

Вижте също:

 Български