Работа с управление на таблици
Работа с управление на таблици
Това ръководство показва как да създавате, зареждате, модифицирате и запазвате 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()) |