{"id":531,"date":"2026-04-03T17:35:55","date_gmt":"2026-04-03T09:35:55","guid":{"rendered":"https:\/\/xlwings.net\/blog\/?p=531"},"modified":"2026-03-23T07:39:59","modified_gmt":"2026-03-23T07:39:59","slug":"how-to-set-gridlines-using-xlwings","status":"publish","type":"post","link":"https:\/\/xlwings.net\/blog\/how-to-set-gridlines-using-xlwings\/","title":{"rendered":"How To Set Gridlines Using xlwings?"},"content":{"rendered":"<p>\u3010<b>Method<\/b>\u3011<\/p>\n<p>Gridlines are represented by the **Gridlines** object. You can use its **Border** or **Format** properties to set the gridline color, line style, width, and other attributes. The **MajorGridlines** and **MinorGridlines** properties of the **Axis** object return **Gridlines** objects for the major and minor gridlines, respectively. Before setting these properties, the **HasMajorGridlines** and\/or **HasMinorGridlines** properties of the **Axis** object must be set to `True`.<\/p>\n<p>sht.api.Range(&#8216;A1:B7&#8217;).Select()\u00a0\u00a0\u00a0 #Data<\/p>\n<p>cht=sht.api.Shapes.AddChart().Chart\u00a0\u00a0\u00a0 #Add chart<\/p>\n<p>axs=cht.Axes(1)\u00a0\u00a0\u00a0 #Horizontal axis<\/p>\n<p>axs2=cht.Axes(2)\u00a0\u00a0\u00a0 #Vertical axis<\/p>\n<p>axs.HasMajorGridlines=True\u00a0\u00a0\u00a0 #Show major gridlines for horizontal axis<\/p>\n<p>axs.MajorGridlines.Border.ColorIndex =3\u00a0\u00a0\u00a0 #Red<\/p>\n<p>axs.MajorGridlines.Border.LineStyle = xw.constants.LineStyle.xlDash\u00a0\u00a0\u00a0 #Line style<\/p>\n<p>axs2.HasMajorGridlines=True\u00a0\u00a0\u00a0 #Show major gridlines for vertical axis<\/p>\n<p>axs2.MajorGridlines.Border.ColorIndex = 3\u00a0\u00a0\u00a0 #Red<\/p>\n<p>axs2.MajorGridlines.Border.LineStyle = xw.constants.LineStyle.xlDash\u00a0\u00a0\u00a0 #Line style<\/p>\n<p>#Can also use the following code for setting<\/p>\n<p>#axs.MajorGridlines.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((255,0,0))<\/p>\n<p>#axs.MajorGridlines.Format.Line.DashStyle=4<\/p>\n<p>#axs2.MajorGridlines.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((255,0,0))<\/p>\n<p>#axs2.MajorGridlines.Format.Line.DashStyle=4<\/p>\n<p>\u00a0<\/p>\n<p>\u3010<b>Example<\/b>\u3011<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"768\" src=\"https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-01-5.jpg\" alt=\"\" class=\"wp-image-1164\" srcset=\"https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-01-5.jpg 880w, https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-01-5-300x262.jpg 300w, https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-01-5-768x670.jpg 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u3010<strong>Code<\/strong>\u3011<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#Coordinate system - Gridlines\n\nimport xlwings as xw\nimport os\n\nroot = os.getcwd()\napp = xw.App(visible=True, add_book=False)\nwb=app.books.open(root+r\"\/P1P2.xlsx\",read_only=False)\nsht=wb.sheets(1)\n\nsht.api.Range('A1:B7').Select()    #Data\ncht=sht.api.Shapes.AddChart().Chart    #Add chart\naxs=cht.Axes(1)    #Horizontal axis\naxs2=cht.Axes(2)    #Vertical axis\naxs.HasMajorGridlines=True    #Show major gridlines for horizontal axis\naxs.MajorGridlines.Border.ColorIndex =3    #Red\naxs.MajorGridlines.Border.LineStyle = xw.constants.LineStyle.xlDash    #Line style\naxs2.HasMajorGridlines=True    #Show major gridlines for vertical axis\naxs2.MajorGridlines.Border.ColorIndex = 3    #Red\naxs2.MajorGridlines.Border.LineStyle = xw.constants.LineStyle.xlDash    #Line style\n#Can also use the following code for setting\n#axs.MajorGridlines.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((255,0,0))\n#axs.MajorGridlines.Format.Line.DashStyle=4\n#axs2.MajorGridlines.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((255,0,0))\n#axs2.MajorGridlines.Format.Line.DashStyle=4\n\n#wb.save()\n#wb.close()\n#app.kill()\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"756\" src=\"https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-19.jpg\" alt=\"\" class=\"wp-image-1166\" srcset=\"https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-19.jpg 880w, https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-19-300x258.jpg 300w, https:\/\/xlwings.net\/blog\/wp-content\/uploads\/2026\/04\/2-19-768x660.jpg 768w\" sizes=\"auto, (max-width: 880px) 100vw, 880px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Method<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-531","post","type-post","status-publish","format-standard","hentry","category-xlwings-chart"],"_links":{"self":[{"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/posts\/531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/comments?post=531"}],"version-history":[{"count":2,"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/posts\/531\/revisions"}],"predecessor-version":[{"id":1167,"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/posts\/531\/revisions\/1167"}],"wp:attachment":[{"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/media?parent=531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/categories?post=531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xlwings.net\/blog\/wp-json\/wp\/v2\/tags?post=531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}