- Làm việc với Spreadsheet Management

- 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()); // Sheet1

Tả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)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());       // 1200

Thiế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 automatically

Mẹ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) qua cells.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ánh IndexOutOfBoundsException.
  • Tên các trang của bạn rõ ràng với setName() Sau khi add() 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

IssueCauseFix Đặt
WorkbookLoadException trên new Workbook(fileName)File path sai hoặc file lockedKiểm tra con đường có và đọc được; đóng các ứng dụng khác giữ tệp
get(index) ném IndexOutOfBoundsExceptionIndex bên ngoài getCount() - 1Check 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ácHã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 value

Tóm tắt Tham chiếu API

Class / Phương phápDescription
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)”)
LoadOptionsThiết lập cho Workbook Loading
SaveFormatEnum of format constants (format is inferred from file extension; không được chuyển đến save())

See Also

 Tiếng Việt