{"id":397,"date":"2018-03-14T15:14:52","date_gmt":"2018-03-14T07:14:52","guid":{"rendered":"http:\/\/www.max-shu.com\/blog\/?p=397"},"modified":"2018-03-14T15:14:52","modified_gmt":"2018-03-14T07:14:52","slug":"python%e4%bd%bf%e7%94%a8openpyxl%e8%af%bb%e5%8f%96%e3%80%81%e4%bf%ae%e6%94%b9excel%e6%96%87%e4%bb%b6%e5%8f%8a%e7%bb%98chart%e5%9b%be%ef%bc%88%e6%94%af%e6%8c%81xlsx%ef%bc%89","status":"publish","type":"post","link":"http:\/\/www.max-shu.com\/blog\/?p=397","title":{"rendered":"Python\u4f7f\u7528openpyxl\u8bfb\u53d6\u3001\u4fee\u6539excel\u6587\u4ef6\u53ca\u7ed8chart\u56fe\uff08\u652f\u6301xlsx\uff09"},"content":{"rendered":"<div>\u5b89\u88c5\uff1a<\/div>\n<div>\n<div>\n<div>C:\\Python27\\Scripts&gt;pip install openpyxl<\/div>\n<div><\/div>\n<div><b>\u4f7f\u7528\u4f8b\u5b50\uff0c\u4e0d\u591a\u89e3\u91ca\uff1a<\/b><\/div>\n<div>\u00a0 \u00a0 \u00a0 \u00a0 border=Border(left=Side(border_style=&#8217;thin&#8217;, color=&#8217;FF000000&#8242;),<br \/>\nright=Side(border_style=&#8217;thin&#8217;, color=&#8217;FF000000&#8242;),<br \/>\ntop=Side(border_style=&#8217;thin&#8217;, color=&#8217;FF000000&#8242;),<br \/>\nbottom=Side(border_style=&#8217;thin&#8217;, color=&#8217;FF000000&#8242;))<br \/>\nworkBook = openpyxl.load_workbook(os.path.join(fileDir, u&#8221;\u6d4b\u8bd5.xlsx&#8221;))<\/p>\n<p>sheet = workBook.get_sheet_by_name(u&#8221;Statistics&#8221;)<br \/>\nsheet.cell(row=4, column=2).value = 235<br \/>\nsheet.cell(row=4, column=2).style = Style(border=border)<br \/>\nsheet.cell(&#8216;A4&#8217;).value = datetime.date.today() &#8211; datetime.timedelta(days=2)<br \/>\nsheet.cell(&#8216;A4&#8217;).number_format = &#8220;yyyy\/mm\/dd&#8221;<br \/>\nsheet.cell(&#8216;A4&#8242;).style = Style(border=border, number_format=&#8217;yyyy\/mm\/dd&#8217;)<\/p>\n<p>sheet.cell(&#8220;B5&#8221;).value = 235<br \/>\nsheet.cell(&#8220;B5&#8221;).style = Style(border=border)<br \/>\nsheet.cell(&#8216;A5&#8217;).value = datetime.date.today() &#8211; datetime.timedelta(days=1)<br \/>\nsheet.cell(&#8216;A5&#8217;).number_format = &#8220;yyyy\/mm\/dd&#8221;<br \/>\nsheet.cell(&#8216;A5&#8242;).style = Style(border=border, number_format=&#8217;yyyy\/mm\/dd&#8217;)<br \/>\nsheet.cell(&#8220;B6&#8221;).value = 235<br \/>\nsheet.cell(&#8220;B6&#8221;).style = Style(border=border)<br \/>\nsheet.cell(&#8216;A6&#8217;).value = datetime.date.today()<br \/>\nsheet.cell(&#8216;A6&#8217;).number_format = &#8220;yyyy\/mm\/dd&#8221;<br \/>\nsheet.cell(&#8216;A6&#8242;).style = Style(border=border, number_format=&#8217;yyyy\/mm\/dd&#8217;)<br \/>\nsheet.cell(&#8220;B7&#8221;).value = 235<br \/>\nsheet.cell(&#8220;B7&#8221;).style = Style(border=border)<br \/>\nsheet.cell(&#8216;A7&#8217;).value = datetime.date.today() + datetime.timedelta(days=1)<br \/>\nsheet.cell(&#8216;A7&#8217;).number_format = &#8220;yyyy\/mm\/dd&#8221;<br \/>\nsheet.cell(&#8216;A7&#8242;).style = Style(border=border, number_format=&#8217;yyyy\/mm\/dd&#8217;)<\/p>\n<p># chart operation<br \/>\nsheetChart = workBook.get_sheet_by_name(u&#8221;Chart&#8221;)<br \/>\nchartTopPos = 5<br \/>\nchartHeight = 200<br \/>\nlabels = Reference(sheet, (3, column_index_from_string(&#8216;A&#8217;)), (sheet.max_row, column_index_from_string(&#8216;A&#8217;)))<br \/>\nvalues = Reference(sheet, (3, column_index_from_string(&#8216;B&#8217;)), (sheet.max_row, column_index_from_string(&#8216;B&#8217;)))<br \/>\nseries1 = Series(values, title=u&#8221;\u54c8aaa&#8221;, labels=labels)<br \/>\nseries2 = Series(values, title=u&#8221;bbb&#8221;, labels=labels)<br \/>\nself.Execl_Insert_Chart(sheetChart, u&#8221;\u54c8CPU&#8221;, 10, chartTopPos, 1000, chartHeight, series1, series2)<br \/>\nchartTopPos += (chartHeight + 5)<br \/>\nself.Execl_Insert_Chart(sheetChart, u&#8221;Memory(GB)&#8221;, 10, chartTopPos, 1000, chartHeight, series1, series2)<\/p>\n<p># save file<br \/>\nworkBook.save(os.path.join(fileDir, u&#8221;\u6d4b\u8bd5_new.xlsx&#8221;))<\/p><\/div>\n<div><\/div>\n<div>\u00a0 \u00a0 def Execl_Insert_Chart(self, sheet, title, left, top, width, height, *series):<br \/>\nchart = LineChart()<br \/>\nchart.title = title<br \/>\nfor serial in series:<br \/>\nchart.append(serial)<br \/>\nchart.drawing.left = left<br \/>\nchart.drawing.top = top<br \/>\nchart.drawing.width = width<br \/>\nchart.drawing.height = height<br \/>\nchart.margin_left = width &#8211; 100<br \/>\nsheet.add_chart(chart)<\/div>\n<div><\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u5b89\u88c5\uff1a C:\\Python27\\Scripts&gt;pip install openpyxl \u4f7f\u7528\u4f8b\u5b50\uff0c\u4e0d\u591a &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[324,291,323,108,325],"class_list":["post-397","post","type-post","status-publish","format-standard","hentry","category-3","tag-chart","tag-excel","tag-openpyxl","tag-python","tag-325"],"views":2954,"_links":{"self":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=397"}],"version-history":[{"count":1,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/397\/revisions"}],"predecessor-version":[{"id":398,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/397\/revisions\/398"}],"wp:attachment":[{"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=397"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.max-shu.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}