- Làm việc với Spreadsheet Management
- Làm việc với Spreadsheet Management
Hướng dẫn này cho bạn biết làm thế nào để tạo, tải lên, sửa đổi và lưu sổ làm việc Excel bằng cách sử dụng Aspose.Cells FOSS for Java. Workbook, WorksheetCollection, Worksheet, Cells, và Cell Các lớp học cho quản lý bảng điều khiển cuối cùng đến cuối.
Tạo một cuốn sách mới
Sử dụng máy xây dựng không có lý do để tạo một sổ làm việc trống rỗng. Tên Sheet1 được thêm tự động.
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()); // Sheet1Tải sổ làm việc từ một tệp
Đi qua một file path đến Workbook(fileName) Nhà xây dựng mở một hiện có .xlsx hoặc .ods file. sử dụng Workbook(fileName, options) để cung cấp LoadOptions Khi bạn cần để kiểm soát định dạng phát hiện hoặc xử lý mật khẩu.
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);Tải một Workbook từ Stream
Workbook(stream) và Workbook(stream, options) chấp nhận bất kỳ java.io.InputStream. Điều này hữu ích khi tệp đến từ một nguồn mạng, cơ sở dữ liệu BLOB hoặc một In-memory byte array.
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());
}Truy cập và quản lý bảng tính
Workbook.getWorksheets() Trở lại a WorksheetCollection.- Tải lại các bảng theo chỉ số hoặc theo tên, iterate trên tất cả các lá và thêm hoặc loại bỏ lá khi cần thiết.
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());Đọc và viết giá trị tế bào
Navigate to a cell sử dụng Worksheet.getCells(), mà trở lại a Cells Bộ sưu tập. Retrieve A Cell Tên của bạn (và. "A1") hoặc bằng chỉ số hàng/thông cột dựa trên zero. sử dụng putValue() viết các giá trị nguyên thủy và getValue() / getStringValue() để đọc trở lại họ.
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()); // 1200Thiết lập các công thức cell
Tùy chọn một dòng công thức cho một ô qua setFormula().Aspose.Cell đánh giá công thức khi sổ làm việc được lưu hoặc khi tính toán được kích hoạt một cách rõ ràng.
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)Tiết kiệm một Workbook
Sử dụng Workbook.save(fileName) để viết sổ làm việc vào đĩa. định dạng xuất là được xác định bởi file extension; sử dụng .xlsx Excel làm việc.
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");Giải phóng nguồn lực
Workbook Thực hiện AutoCloseable.Sử dụng một block try-with-resources để đảm bảo rằng Các nguồn lực nội bộ của sổ làm việc được phát hành ngay sau khi sử dụng.
import com.aspose.cells.foss.Workbook;
try (Workbook workbook = new Workbook("data/large.xlsx")) {
workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automaticallyMẹo và Thực hành Tốt nhất
- Sử dụng các nguồn lực (tạm dịch: try-with resources)
try (Workbook wb = new Workbook(...))(Vì lớn) file để tránh giữ các file handles mở. - Prefer
cells.get(row, column)quacells.get(cellName)trong các loops nóng; The quá tải toàn bộ tránh lặp lại tên ô. - Call
workbook.getWorksheets().getCount()trước khi truy cập vào các bảng chỉ số để tránhIndexOutOfBoundsException. - Tên các trang của bạn rõ ràng với
setName()Sau khiadd()DOWNSTREAM code có thể Hãy nhìn chúng theo tên chứ không phải bằng chỉ số nhạy cảm. - Không dựa vào kết quả công thức ngay sau khi
setFormula();• Sau khi đầu tiên hoặc tải lại nếu bạn cần các giá trị tính toán trong cùng một phiên.
Các vấn đề thường gặp
| Issue | Cause | Fix Đặt |
|---|---|---|
WorkbookLoadException trên new Workbook(fileName) | File path sai hoặc file locked | Kiểm tra con đường có và đọc được; đóng các ứng dụng khác giữ tệp |
get(index) ném IndexOutOfBoundsException | Index bên ngoài getCount() - 1 | Check sheets.getCount() trước khi truy cập; sử dụng add() Để tạo một tấm mới |
Formula Cell trở lại trống rỗng getValue() | Công thức không tự tính trong bộ nhớ | Lưu sổ làm việc và tải lại để có được kết quả công thức |
file output bị phá hủy sau khi save() | file file không chính xác | Hãy chắc chắn rằng tên tập tin kết thúc với .xlsx;· Định dạng được kết thúc từ sự mở rộng |
FAQ
Làm thế nào để đổi tên một bảng tính?
Retrieve các Worksheet mục theo index từ WorksheetCollection và gọi setName(name) Với cái tên hiển thị mới:
workbook.getWorksheets().get(0).setName("Sales Data");Làm thế nào để tôi kiểm tra bao nhiêu lá có một cuốn sách làm việc?
Call getCount() trên The WorksheetCollection Trở lại bởi Workbook.getWorksheets() Để có được tổng số các bảng tính:
int count = workbook.getWorksheets().getCount();Tôi có thể thêm nhiều lá thư trong một cuộc gọi không?
Không gọi worksheets.add(sheetName) mỗi lần. mỗi cuộc gọi trả về chỉ số của - Tải mới tạo ra tấm.
Làm thế nào để tôi kiểm tra loại giá trị của một tế bào?
Retrieve các Cell bằng tên và gọi getType(), mà trở lại a CellValueType Giá trị Enum:
Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum valueTóm tắt Tham chiếu API
| Class / Phương pháp | Description |
|---|---|
Workbook() | Tạo một sổ làm việc trống với 1 lá trắng |
Workbook(fileName) | Tải sổ làm việc từ một đường file |
Workbook(stream) | tải một cuốn sách từ một InputStream |
Workbook(fileName, options) | tải một cuốn sách làm việc với LoadOptions |
Workbook.getWorksheets() | Trở lại The WorksheetCollection |
Workbook.save(fileName) | Tiết kiệm cho một tệp (tình dạng được kết thúc từ phần mở rộng) |
Workbook.save(stream, format) | Tiết kiệm cho một dòng với rõ ràng SaveFormat |
WorksheetCollection.get(index) | Lấy lại bảng bằng chỉ số dựa trên zero |
WorksheetCollection.get(name) | Lời bài hát: Returns Sheet by Name |
WorksheetCollection.add(sheetName) | Thêm một danh sách; trả lại chỉ số của nó |
WorksheetCollection.getCount() | Số lượng các tờ trong sổ làm việc |
WorksheetCollection.removeAt(sheetName) | Xóa một tấm bằng tên |
Worksheet.getCells() | Trở lại The Cells Bộ sưu tập cho tờ này |
Worksheet.getName() / setName() | Nhận hoặc đặt tên tab bảng |
Cells.get(cellName) | Trở lại a Cell theo tên (ví dụ: “A1”) |
Cells.get(row, column) | Trở lại a Cell bằng đường dây/một cột dựa trên zero |
Cell.putValue(value) | viết một giá trị cho ô |
Cell.getValue() | Đọc giá trị tế bào như: Object |
Cell.getStringValue() | Đọc giá trị tế bào như một String |
Cell.setFormula(formula) | Thiết lập một dòng công thức (ví dụ: “=SUM(A1:A2)”) |
LoadOptions | Thiết lập cho Workbook Loading |
SaveFormat | Enum of format constants (format is inferred from file extension; không được chuyển đến save()) |