Excel のシートには、セルを区切るために薄い灰色の**目盛線(グリッドライン)**があらかじめ表示されています。データを入力する作業中は目安になって便利ですが、数値だけをすっきり見せたい集計表や、印刷して手書きで書き込みたい帳票では、この線が少しうるさく感じられます。反対に、既定の薄い灰色では区切りが見えにくい、もう少し目を引く色で区切りたい、という場面もあるでしょう。 本記事では、Spire.XLS for Python を使用して Python で Excel の目盛線を非表示・表示・色変更する方法 を紹介します。あわせて、混同しやすい「セルの罫線」との違いや、画像・ PDF に出力したときの目盛線の扱いも確認していきます。 クイックナビゲーション 準備:Spire.XLS for Python のインストール 目盛線の表示・非表示を切り替える 目盛線の色を変更する 目盛線とセルの罫線は別物 画像出力・PDF 変換と目盛線 まとめ FAQ 準備:Spire.XLS for Python のインストール 本記事のコードは Spire.XLS for Python と plum-dispatch v1.7.4 を使用しています(動作確認は Spire.XLS for Python 16.8.2)。pip コマンドでインストールしてください。 pip install Spire.XLS スクリプト側では、次の 2 行をインポートします。 from spire.xls import * from spire.xls.common import * 手動でインストールする場合は、Spire.XLS for Python のダウンロードページ からパッケージを取得できます。 目盛線の表示・非表示を切り替える 目盛線の表示・非表示は、ワークシートの Worksheet.GridLinesVisible プロパティだけで制御できます。このプロパティは真偽値で、False を代入すると目盛線が消え、True を代入すると表示に戻ります。既定値は True(表示)です。 from spire.xls import * from spire.xls.common import * # Workbook オブジェクトを作成 workbook = Workbook() # Excel ワークブックを読み込む workbook.LoadFromFile("Sample.xlsx") # 最初のワークシートを取得 sheet = workbook.Worksheets[0] # 目盛線を非表示にする sheet.GridLinesVisible = False # 目盛線を表示に戻す場合は True を代入する # sheet.GridLinesVisible = True # ワークブックを保存 workbook.SaveToFile("HideGridlines.xlsx", FileFormat.Version2016) workbook.Dispose() 実行して Excel で開くと、シート全体の薄い灰色の線が消え、セルの値だけが表示されます。目盛線はあくまで画面の補助線なので、非表示にしてもセルの値・数式・書式には一切影響しません。設定はファイルに保存されるため、読み込み直したあとでも sheet.GridLinesVisible を参照すれば現在の状態を確認できます(非表示なら False が返ります)。 なお GridLinesVisible が対象とするのはシート単位です。「この範囲だけ目盛線を消したい」という細かい指定はできない点に注意してください。詳しくは「目盛線とセルの罫線は別物」で触れます。 目盛線の色を変更する 既定の薄い灰色を別の色に変えたいときは、Worksheet.GridLineColor プロパティを使います。既定値は ExcelColors.BlackCustom(Excel の標準の灰色)です。 from spire.xls import * from spire.xls.common import * # Workbook オブジェクトを作成 workbook = Workbook() # Excel ワークブックを読み込む workbook.LoadFromFile("Sample.xlsx") # 最初のワークシートを取得 sheet = workbook.Worksheets[0] # 目盛線の色を赤に変更する sheet.GridLineColor = ExcelColors.Red # ワークブックを保存 workbook.SaveToFile("ChangeGridlineColor.xlsx", FileFormat.Version2016) workbook.Dispose() GridLineColor に指定できるのは ExcelColors 列挙体の値です。この列挙体には Red(値 2)や Blue、Green、Orange、Teal、Gray50Percent など 66 種類の名前付きの色が用意されており、用途に応じて選べます。たとえば青系にしたい場合は次のようにします。 sheet.GridLineColor = ExcelColors.Blue ここにはひとつ注意点があります。 GridLineColor が受け付けるのは ExcelColors の列挙値だけで、任意の RGB 値を指定することはできません。Color.FromRgb() で作ったカスタム色を代入しようとすると、次の例外で停止します(実測)。 AttributeError: 'Color' object has no attribute 'value' 「この色にしたい」という正確な RGB が決まっている場合は、後述するセルの罫線を使う必要があります。なお、GridLinesVisible と GridLineColor は独立した設定です。目盛線を非表示にしている間は色の設定は画面に現れず、GridLinesVisible を True に戻した時点で指定した色が反映されます。 目盛線とセルの罫線は別物 「Excel の線」と一口に言っても、実は目盛線と罫線はまったくの別物です。ここを混同すると、思ったとおりに線が出ない原因になります。 目盛線(グリッドライン) 罫線(セルの枠線) 設定する単位 シート全体 セル・セル範囲ごと Spire.XLS の API Worksheet.GridLinesVisible / Worksheet.GridLineColor CellRange.Borders 指定できる色 ExcelColors 列挙体の色のみ Color オブジェクト(任意の RGB 可) 印刷 既定では印刷されない 設定した線がそのまま印刷される 用途 画面上の入力ガイド 配布物・帳票の枠組み 目盛線はシート全体に一律で引かれる画面表示用の補助線で、色は列挙体で用意されたものに限られます。一方、罫線はセルやセル範囲に個別に設定でき、太さ・線種・色も自由に決められます。配布する帳票で枠線を見せたいなら、目盛線の色を変えるのではなく罫線を引くのが正解です。 「表全体の目盛線は消したまま、合計欄のまわりだけ線を出したい」といった要件は、目盛線を非表示にしたうえで、対象のセル範囲に罫線を設定すると実現できます。 # 目盛線はシート全体で非表示にする sheet.GridLinesVisible = False # 合計欄のまわりだけ罫線(上辺)を引く sheet.Range["A6:D6"].Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thin sheet.Range["A6:D6"].Borders[BordersLineType.EdgeTop].Color = Color.get_Black() もうひとつ押さえておきたいのが印刷の扱いです。目盛線は既定では印刷されません。紙に出力して線を出したい場合は、Excel の[ページ レイアウト]タブで[目盛線]の[印刷]にチェックを入れるか、Spire.XLS 側で Worksheet.PageSetup.IsPrintGridlines を True にします。 # 目盛線を印刷対象にする sheet.PageSetup.IsPrintGridlines = True 目盛線そのものの色・太さは変えられないため、印刷物の見た目を細かく整えたい場合はやはり罫線の利用を検討してください。 画像出力・PDF 変換と目盛線 目盛線を非表示にした結果を画像で確認しようとして、Worksheet.ToImage() や PDF 変換を使うと、思ったとおりの絵にならないことがあります。実際に検証したところ、Worksheet.ToImage() は目盛線を描画しません。目盛線ありのシートと非表示にしたシートをそれぞれ画像化して比較しても、出力は完全に一致しました(どちらも目盛線なしで描画されます)。 つまり、目盛線の表示・非表示や色の設定は、アプリ内の Excel 表示にのみ効く設定であり、Spire.XLS の描画エンジンには反映されません。目盛線の状態を目視で確認したい場合は、生成した .xlsx を Excel で開いて確認してください。 画像や PDF として「線のある表」を配布したい場合は、目盛線に頼らず、前述の罫線を設定しておくのが確実です。罫線であれば画像化・ PDF 変換でもそのまま描画されます。 まとめ 本記事で扱った操作を整理します。 目盛線を非表示にする — sheet.GridLinesVisible = False(表示に戻すなら True) 目盛線の色を変更する — sheet.GridLineColor = ExcelColors.Red のように列挙値を代入する 指定できる色 — ExcelColors の 66 色のみ。任意の RGB は指定できず、正確な色が欲しいときは罫線を使う 設定の単位 — どちらもシート単位。範囲ごとの指定はできない 描画への反映 — ToImage() や PDF 変換では目盛線は描画されない。確認は Excel で行う 目盛線は「画面での見え方」を整えるための設定で、帳票の枠組みを作る機能ではありません。この違いを押さえておくと、用途に応じて目盛線と罫線を使い分けられます。 Spire.XLS for Python の全機能を評価したい場合は、30 日間の無料ライセンスを申請できます。なお無償の試用版では、保存したファイルに評価用の警告シートが追加されます。ライセンスを適用するとこれも出力されなくなります。 FAQ 目盛線を非表示にすると、セルに引いた罫線も消えますか? いいえ。目盛線と罫線は別の設定です。GridLinesVisible = False で消えるのはシート全体の目盛線だけで、CellRange.Borders で設定した罫線はそのまま残ります。 目盛線の色に、指定した RGB 値をそのまま使えますか? 使えません。GridLineColor が受け付けるのは ExcelColors 列挙体の値だけです。Color.FromRgb() などで作った任意の色を代入すると AttributeError になります。正確な色を指定したい場合は、罫線(Borders)の Color プロパティを使ってください。 特定のセル範囲だけ目盛線を消せますか? GridLinesVisible はシート単位の設定のため、範囲を指定して部分的に消すことはできません。該当範囲のセルに白などの背景色を塗りつぶすか、シート全体の目盛線を消したうえで必要な範囲に罫線を引く、といった方法で代替してください。 目盛線を非表示にすると、ほかのシートにも影響しますか? 影響しません。GridLinesVisible と GridLineColor は、いずれも設定したワークシートにのみ作用します。ブック内の別のシートは、それぞれの設定のままです。 印刷すると目盛線は出ますか? 既定では印刷されません。目盛線を紙に出したい場合は、Excel の[ページ レイアウト]タブで[目盛線]の[印刷]を有効にするか、Spire.XLS の Worksheet.PageSetup.IsPrintGridlines を True に設定してください。ただし目盛線は色や太さを細かく指定できないため、印刷物の見た目を整えたい場合は罫線の利用をおすすめします。 グラフの目盛線も同じプロパティで変えられますか? 変えられません。GridLinesVisible / GridLineColor が対象とするのはワークシートの目盛線です。グラフの軸に表示される目盛線はグラフ側の設定で、別の API を使って制御します。