2014-07-23 24 views
9

Tôi đang cố gắng sử dụng Openpyxl để áp dụng đường viền cho ô, nhưng tôi đã thất bại trong tác vụ cơ bản nhất "áp dụng bất kỳ loại biên giới nào cho bất kỳ ô nào". Tôi cố gắng sao chép từ các tài liệu Openpyxl (http://pythonhosted.org/openpyxl/styles.html#introduction) phong cách mặc định và sửa đổi, nhưng điều đó mang lại cho tôiÁp dụng đường viền cho một ô trong OpenPyxl

"TypeError:init() got an unexpected keyword argument 'superscript'"

tôi đã cố gắng sao chép thẳng ra khỏi một ví dụ ở đây (Apply borders to all cells in a range with openpyxl), nhưng điều đó mang lại cho tôi

AttributeError: type object 'Border' has no attribute 'BORDER_THIN'

(ngay cả sau khi tôi sửa lỗi chính tả và lỗi nhập không đủ).

Có ai biết cách áp dụng đường viền bằng Python 3.3 và OpenPyxl 2.0.4 không? Tất cả những gì tôi đang tìm kiếm là một đoạn mã, nếu tôi sao chép-dán nó vào một tập lệnh trống, sẽ đặt một đường viền xung quanh bất kỳ ô nào trong sổ làm việc.

+1

Bạn nên tránh yêu cầu mã để sao chép-dán, vì nó có khả năng thu nhỏ phiếu bầu cho câu hỏi của bạn và làm cho mọi người không hài lòng. Bạn đã hoàn thành tốt công việc mô tả vấn đề của mình và các bước bạn đã thực hiện để khắc phục sự cố, mặc dù bạn có thể nhận được kết quả tốt hơn nếu bạn nhúng mã bạn hiện đang làm việc và truy xuất đầy đủ, thay vì chỉ liên kết mã các phần của traceback. Ngăn xếp cuộc gọi được cung cấp bởi xử lý ngoại lệ của Python có thể giúp chẩn đoán sự cố của bạn. – skrrgwasme

+0

Ngoại lệ cho thấy nó có thể là một lỗi, mặc dù có liên quan đến phông chữ chứ không phải là biên giới. Vui lòng dán mã bạn hiện đang sử dụng để chúng tôi có thể điều tra. –

+0

Xin lỗi nếu tôi có vẻ cầu kỳ, đặc biệt là vì hai bình luận trước đó gần như mâu thuẫn nhau, nhưng liên kết đến pythonhosted.org hiện bị hỏng. –

Trả lời

4

Với phiên bản 2.0.4 openpyxl, đoạn này làm việc cho tôi:

from openpyxl.styles.borders import Border, Side 
from openpyxl.styles import Style 
from openpyxl import Workbook 

thin_border = Border(left=Side(style='thin'), 
        right=Side(style='thin'), 
        top=Side(style='thin'), 
        bottom=Side(style='thin')) 
my_style = Style(border=thin_border) 

wb = Workbook() 
ws = wb.get_active_sheet() 
ws.cell(row=3, column=2).style = my_style 
wb.save('border_test.xlsx') 
13

Với phiên bản 2.2.5 openpyxl, đoạn này làm việc cho tôi:

from openpyxl.styles.borders import Border, Side 
from openpyxl import Workbook 

thin_border = Border(left=Side(style='thin'), 
        right=Side(style='thin'), 
        top=Side(style='thin'), 
        bottom=Side(style='thin')) 

wb = Workbook() 
ws = wb.get_active_sheet() 
# property cell.border should be used instead of cell.style.border 
ws.cell(row=3, column=2).border = thin_border 
wb.save('border_test.xlsx') 
+1

Từ các câu trả lời khác, có vẻ như biên giới cũng có thể là '' trung bình'' và do đó, có lẽ, '' dày '' quá. Ai đó có thể đăng một tham chiếu đến các giá trị hợp lệ khác không? –

+0

Với phiên bản 2.4.4, các giá trị khác dường như là: dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, dày, mỏng. Đối với các phiên bản khác, [truy cập tài liệu] (http://openpyxl.readthedocs.io/en/default/_modules/openpyxl/styles/borders.html#Side) – SdaliM

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