Làm thế nào để tải một bảng điều khiển trong C++

Làm thế nào để tải một bảng điều khiển trong C++

Aspose.Cells FOSS for C++ allows you to load and read existing XLSX spreadsheets without requiring Microsoft Excel. This guide walks through loading a workbook, accessing worksheets, and reading cell values using the Workbook, Worksheet, và Cell lớp học .

Hướng dẫn từng bước

Bước 1: Tạo dựng xây dựng

Thêm Aspose.Cells FOSS cho C++ vào dự án CMake của bạn:

cmake_minimum_required(VERSION 3.15)
project(LoadSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)

add_executable(LoadSpreadsheet main.cpp)
target_link_libraries(LoadSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)

Bước 2: Bao gồm các tiêu đề cần thiết

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/WorksheetCollection.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"

using namespace Aspose::Cells_FOSS;

Bước 3: Tải sổ làm việc

Chuyển file path đến Workbook Constructor để tải một tệp XLSX hiện có:

int main() {
    Workbook workbook("input.xlsx");
    // workbook is now loaded and ready to use
    return 0;
}

Bước 4: Truy cập một bảng điều khiển

Sử dụng Workbook::GetWorksheets() để thu hồi bộ sưu tập bảng tính, sau đó truy cập bằng index:

Worksheet& sheet = workbook.GetWorksheets()[0];
std::string name = sheet.GetName();

Bước 5: Đọc giá trị tế bào

Truy cập các tế bào bằng dòng địa chỉ và đọc giá trị của họ:

std::string text = sheet.GetCells()["A1"].GetStringValue();
double number = sheet.GetCells()["B2"].GetValue().AsDouble();
bool flag = sheet.GetCells()["C3"].GetValue().AsBool();

Bước 6: Giữ bất kỳ thay đổi nào

Sau khi thực hiện các sửa đổi, lưu lại một tập tin:

workbook.Save("output.xlsx");
workbook.Dispose();

Các vấn đề chung và Fixes

File không tìm thấy lỗi trên tải Kiểm tra đường tệp là đúng và file tồn tại. Sử dụng một con đường tuyệt đối nếu thư mục làm việc không chắc chắn.

Vòng trống trở lại cho một ô số Sử dụng GetValue().AsDouble() Thay vì GetStringValue()GetStringValue() trả về một dòng trống cho các ô có chứa số thay vì văn bản.

Workbook tải nhưng các tế bào trông trống rỗng Hãy chắc chắn rằng tệp XLSX không được bảo vệ bằng mật khẩu. Aspose.Cells FOSS for C++ không hỗ trợ các tách tin mã hóa.

Formula Cell trả lại giá trị không mong đợi Các tế bào công thức lưu trữ dòng công cụ, không phải giá trị tính toán. Công thức được đánh giá bởi Excel khi tệp được mở. GetFormula() để lấy lại công thức văn bản.

Bộ nhớ không được phát hành sau khi xử lý Call workbook.Dispose() sau khi tất cả các hoạt động được hoàn thành để giải phóng tài nguyên không quản lý.

Thường xuyên hỏi câu hỏi

Tôi có thể tải nhiều bảng tính từ một tệp không?

Có. sử dụng Workbook::GetWorksheets() để truy cập tất cả các trang và iterate theo index. call sheet.GetName() để xác định mỗi tấm bằng tên.

Tôi có thể tải các tệp XLSX với nhiều lá và đọc từ một cụ thể không?

Có. Access sheets by zero-based index: workbook.GetWorksheets()[1] Lại trả lại tấm thứ hai.

Tải một tệp kích hoạt công thức tái tính toán?

No. Thư viện tải các giá trị tế bào và dòng công thức như được lưu trữ trong tệp XLSX. Công thức tái tính toán xảy ra trong Excel hoặc một trình đọc tương thích khi tách file.

Điều gì sẽ xảy ra nếu đường tệp chứa các ký tự Unicode?

Đi qua con đường như một std::string với mã hóa đúng cho nền tảng của bạn. các con đường UTF-8 được hỗ trợ trên Linux và macOS. Trên Windows, đảm bảo rằng con Đường mã hoá phù hợp với hệ thống local.

Có an toàn để tải cùng một tệp nhiều lần đồng thời không?

Thư viện không được bảo mật thread-safe cho truy cập đồng thời cùng một Workbook Load: Loading riêng biệt Workbook Ví dụ theo thread.

See Also

 Tiếng Việt