Робота з управлінням таблицями

Робота з управлінням таблицями

Робота з управлінням таблицями

У цьому керівництві показано, як створювати, завантажувати, змінювати та зберігати робочі книжки 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(), що повертає 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(...))) для великих файлів, щоб уникнути відкриття ручки з файлами.
  • Prefer cells.get(row, column) перевершено cells.get(cellName) в гарячих циклах; перевантаження цілих числов запобігає повторному аналізу імен клітин.
  • Call workbook.getWorksheets().getCount() перед доступом до листів за індексом, щоб уникнути IndexOutOfBoundsException.
  • Назвіть свої листи чітко з: setName() після add() так що код в нижній частині може бути шукати їх по імені, а не за крихким індексом.
  • Не варто покладатися на результати формули відразу після прийому. setFormula(); зберегти перше або перезавантажити, якщо вам потрібні обчислені значення в той же сеанс.

Загальні питання

IssueCauseВиправлення
WorkbookLoadException на new Workbook(fileName)Неправильний шлях файлу або заблокований файлПеревірте, що шлях існує і читається; закрийте інші програми з файлом.
get(index) кидає IndexOutOfBoundsExceptionІндекс листів за межами getCount() - 1Check sheets.getCount() перед доступом; використання add() для створення нового листа
Формула повертає порожню клітину getValue()Формули, які не автоматично обчислюються в пам’ятіЗаховувати і перезавантажувати книгу для отримання результатів формули.
Вихідний файл пошкоджений після: save()Неправильне розширення файлуПереконайтеся , що назва файлу закінчується на: .xlsx; формат випливає з розширення

FAQ

Як перейменовувати таблицю?

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

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

Як я перевірю, скільки листів має робоча книжка?

Call getCount() на WorksheetCollection повернутий Workbook.getWorksheets() для отримання загальної кількості таблиць:

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

Чи можу я додати кілька листків за один дзвінок?

Не, подзвони. worksheets.add(sheetName) Кожний з них повертає индекс файлу. новоствореній лист.

Як я перевірю тип значення клітини?

Відновити Cell по імені та виклику getType(), що повертає 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())

Див. також

 Українська