2014-07-23 20 views
9

Bir hücreye kenarlık uygulamak için Openpyxl kullanmaya çalışıyorum, ancak en temelde "herhangi bir hücreye herhangi bir yerde herhangi bir kenarlık uygula" görevinde başarısız oldum. Ben Openpyxl belgelerinde (http://pythonhosted.org/openpyxl/styles.html#introduction) varsayılan stil ve modifiye kopyalama çalıştı, ama bu doğruca buraya başka örnek (Apply borders to all cells in a range with openpyxl) üzerinden kopyalama çalıştı banaOpenPyxl'de bir hücreye sınırları uygulama

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

verir, ama bu beni

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

verir (yazım hataları ve yetersiz ithalat hataları düzeltildikten sonra bile).

Python 3.3 ve OpenPyxl 2.0.4 kullanarak sınırların nasıl uygulanacağını bilen var mı? Tek aradığım şey, boş bir komut dosyasına kopyalayıp yapıştırırsam, çalışma kitabındaki herhangi bir hücrenin etrafına bir kenarlık koyacak bir kod parçacığıdır. openpyxl sürümü 2.0.4 ile

+1

Sen kod soran kaçınmalıdır Kopyala-yapıştır, sorunuzda oy aşağı almak ve insanları mutsuz yapmak olasıdır. Sorununuzu ve düzeltmeyi denemek için attığınız adımları açıklayan iyi bir iş yaptınız, ancak şu anda üzerinde çalıştığınız kodu ve yalnızca kod bağlantılarını değil, tam tracetayı gömerseniz daha iyi sonuçlar alabilirsiniz. Traceback bölümleri. Python'un istisna işleme tarafından sağlanan çağrı yığını sorununuzu teşhis etmenize yardımcı olabilir. – skrrgwasme

+0

İstisna, bunun bir hata olabileceğini, ancak kenarlıktan ziyade yazı tipleriyle ilişkili olduğunu düşündürmektedir. Lütfen şu anda kullandığınız kodu, inceleyebilmemiz için yapıştırın. –

+0

Üzgünüm, özellikle iki önceki iki yorum birbiriyle çeliştiği için, pythonhosted.org bağlantısı şu anda bozuk. –

cevap

4

, bu pasajı benim için çalışıyor:

openpyxl sürümü 2.2.5 ile
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

, bu pasajı benim için çalışıyor:

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

Diğer cevaplardan, sınırların '' orta '' ve dolayısıyla muhtemelen '' kalın '' olabileceği de anlaşılıyor. Birisi diğer geçerli değerlere referans gönderebilir mi? –

+0

Sürüm 2.4.4 ile, diğer değerler gibi görünür: dashDot, dashDotDot, kesikli, noktalı, çift, saç, orta, ortaDashDot, mediumDashDotDot, mediumDashed, slantDashDot, kalın, ince. Diğer sürümler için, [dokümanları ziyaret edin] (http://openpyxl.readthedocs.io/en/default/_modules/openpyxl/styles/borders.html#Side) – SdaliM

İlgili konular