2015-02-14 44 views
11

Tôi đang sử dụng openpyxl để đọc giá trị của ô (trội cập nhật addin-webservice cột này. )giá trị của ô đọc Excel và không phải là công thức tính toán nó -openpyxl

Tôi đã sử dụng data_only = True nhưng nó không hiển thị ô hiện tại thay vào đó là giá trị được lưu trữ trong lần cuối Excel đọc trang tính.

wbFile = openpyxl.load_workbook(filename = xxxx,data_only=True) 
wsFile = wbFile[c_sSheet] 

Làm cách nào tôi có thể đọc giá trị thực tế của ô?

+0

Tôi không nghĩ rằng 'openpyxl' sao chép hệ thống con đánh giá công thức lớn của Excel, vì vậy tôi nghĩ bạn không thể tự động tính toán lại tất cả các công thức. Trường hợp tốt nhất, bạn có thể triển khai trình thông dịch dựa trên 'eval' của riêng bạn cho một tập con của ngôn ngữ công thức lớn đó. –

+0

tôi không cần tính toán hoặc thực hiện diễn đàn. tôi chỉ cần đọc giá trị của ô. – user3411047

+1

"Giá trị ô" (ngoài công thức) là những gì Excel lưu khi nó lưu trang tính và bạn đã ngụ ý nó không thực sự là thứ bạn muốn - bạn muốn giá trị "hiện tại" (không phụ thuộc vào giá trị trong các ô khác) và điều đó có nghĩa là bạn * cần * cần tính toán lại công thức dựa trên các giá trị hiện tại của các ô khác! –

Trả lời

3

Như @ alex-martelli nói, openpyxl không đánh giá các công thức. Khi bạn mở tệp Excel bằng openpyxl, bạn có thể chọn đọc công thức hoặc giá trị được tính cuối cùng. Nếu, như bạn chỉ ra, công thức phụ thuộc vào phần bổ trợ thì giá trị được lưu trong bộ nhớ cache có thể không bao giờ chính xác. Khi bổ trợ bên ngoài đặc tả tệp, chúng sẽ không bao giờ được hỗ trợ. Thay vào đó, bạn có thể muốn xem một số thứ như xlwings có thể tương tác với thời gian chạy Excel.

32
wb = openpyxl.load_workbook(filename, data_only=True) 

Cờ data_only giúp.

+1

Có. Điều này trả lời câu hỏi. Nếu bạn muốn truy cập cả hai, phương trình và giá trị sau đó bạn có thể kết thúc trong hai trường hợp, nói 'wb2 = openpyxl.load_workbook (filename)'. Sau đó, khi đọc chỉ mục tương ứng, bạn nhận được giá trị từ 'wb' và phương trình từ' wb2'. –

+0

Xin chào, tôi đã thử điều này nhưng nó không hoạt động cho tôi. Tôi nhận được 'Không' ... – galeej

+0

@galeej có lẽ vì ô của bạn trống rỗng –

Các vấn đề liên quan