Openpyxlを使用してセルに境界線を適用しようとしていますが、最も基本的な「任意のセルに任意の種類の境界線を適用する」タスクに失敗しました。 Openpyxlのドキュメント( http://pythonhosted.org/openpyxl/styles.html#introduction )のデフォルトのスタイルからコピーして変更してみましたが、
"TypeError:init()が予期しないキーワード引数 'superscript'を取得しました"
私はここで別の例を直接コピーしようとしました( openpyxlで範囲内のすべてのセルに境界線を適用 )が、それは私に与えます
AttributeError:タイプオブジェクト 'Border'に属性 'BORDER_THIN'がありません
(タイプミスとインポート不足のエラーを修正した後でも)。
Python 3.3およびOpenPyxl 2.0.4を使用して境界線を適用する方法を知っている人はいますか?私が探しているのは、コードのスニペットで、それをコピーして空白のスクリプトに貼り付けた場合、ブック内の任意のセルの周りに境界線を置きます。
Openpyxlバージョン2.2.5では、次のスニペットが機能します。
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')
ドキュメントではスタイル属性の他の値について言及しています :
値は{'double'、 'dashed'、 'thin'、 'medium'、 'mediumDashDot'、 'dashDot'、 'thick'、 'mediumDashed'、 'hair'、 'dotted'、 'slantDashDot'、 'mediumDashDotDot'、 'dashDotDot'}
Openpyxlバージョン2.0.4では、次のスニペットが機能します。
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')
この回答はバージョン2.4.8で機能します。前の2つの回答との違いは、Sideのプロパティがborder_styleであることです、スタイルではありません
from openpyxl.styles.borders import Border, Side, BORDER_THIN
thin_border = Border(
left=Side(border_style=BORDER_THIN, color='00000000'),
right=Side(border_style=BORDER_THIN, color='00000000'),
top=Side(border_style=BORDER_THIN, color='00000000'),
bottom=Side(border_style=BORDER_THIN, color='00000000')
)
ws.cell(row=3, column=2).border = thin_border