{"id":18663,"date":"2025-01-30T20:54:10","date_gmt":"2025-01-30T12:54:10","guid":{"rendered":"https:\/\/blog.iyatt.com\/?p=18663"},"modified":"2025-11-15T15:03:24","modified_gmt":"2025-11-15T07:03:24","slug":"openpyxl-%e8%ae%be%e7%bd%ae%e8%a1%8c%e9%ab%98%e3%80%81%e5%88%97%e5%ae%bd%e6%80%bb%e6%98%af%e5%92%8c-excel-%e4%b8%8d%e4%b8%80%e8%87%b4","status":"publish","type":"post","link":"https:\/\/blog.iyatt.com\/?p=18663","title":{"rendered":"openpyxl \u8bbe\u7f6e\u884c\u9ad8\u3001\u5217\u5bbd\u603b\u662f\u548c Excel \u4e2d\u4e0d\u4e00\u81f4\uff08The row height and column width settings in openpyxl always seem inconsistent with those in Excel\uff09"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blog.iyatt.com\/?p=18663\/#%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83_Testing_Environment\" >\u6d4b\u8bd5\u73af\u5883 Testing Environment<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blog.iyatt.com\/?p=18663\/#%E6%8F%8F%E8%BF%B0_Description\" >\u63cf\u8ff0 Description<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blog.iyatt.com\/?p=18663\/#%E7%A0%94%E7%A9%B6_Research\" >\u7814\u7a76 Research<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blog.iyatt.com\/?p=18663\/#Test_1\" >Test 1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blog.iyatt.com\/?p=18663\/#Test_2\" >Test 2<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blog.iyatt.com\/?p=18663\/#%E8%A7%84%E5%BE%8B_Pattern\" >\u89c4\u5f8b Pattern<\/a><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83_Testing_Environment\"><\/span>\u6d4b\u8bd5\u73af\u5883 Testing Environment<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<ul>\n<li>office 2024<\/li>\n<li>Python 3.13.1<\/li>\n<li>openpyxl 3.1.5<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%E6%8F%8F%E8%BF%B0_Description\"><\/span>\u63cf\u8ff0 Description<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u4e0b\u9762\u7684\u4ee3\u7801\uff0c\u4f1a\u5c06 1 \u5230 10 \u5217\u7684\u5217\u5bbd\u4f9d\u6b21\u8bbe\u7f6e\u4e3a 10, 10.62, 10.7, 15, 20.8, 30, 35.34, 39.57, 40.20, 57.3\uff0c\u5c06 1 \u5230 10 \u884c\u7684\u884c\u9ad8\u4e5f\u4f9d\u6b21\u8bbe\u7f6e\u4e3a\u8fd9\u4e9b\u6570\u503c\u5927\u5c0f\uff0c\u6700\u7ec8\u5c06\u6587\u4ef6\u4fdd\u5b58\u5230 test.xlsx \u6587\u4ef6\u4e2d<br \/>\nThe following code sets the column widths of columns 1 to 10 to 10, 10.62, 10.7, 15, 20.8, 30, 35.34, 39.57, 40.20, and 57.3, respectively. It also sets the row heights of rows 1 to 10 to these values. Finally, it saves the file as test.xlsx.<\/p>\n<pre><code class=\"language-python\">from openpyxl import Workbook\nfrom openpyxl.utils import get_column_letter\n\nworkbook = Workbook()\nsheet = workbook.active\n\nwidthList = [10, 10.62, 10.7, 15, 20.8, 30, 35.34, 39.57, 40.20, 57.3]\nheightList = widthList\n\nfor i in range(1, len(widthList) + 1):\n    sheet.column_dimensions[get_column_letter(i)].width = widthList[i - 1]\n\nfor i in range(1, len(heightList) + 1):\n    sheet.row_dimensions[i].height = heightList[i - 1]\n\nworkbook.save(&#039;test.xlsx&#039;)<\/code><\/pre>\n<p>\u4e0b\u9762\u662f Excel \u4e2d\u67e5\u770b\u7684\u7ed3\u679c<br \/>\nHere are the results viewed in Excel.<\/p>\n<table>\n<thead>\n<tr>\n<th>\u8bbe\u7f6e\u7684\u5927\u5c0f<\/th>\n<th>Excel\u4e2d\u5217\u5bbdwidth<\/th>\n<th>Excel\u4e2d\u884c\u9ad8height<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>10<\/td>\n<td>9.38<\/td>\n<td>10<\/td>\n<\/tr>\n<tr>\n<td>10.62<\/td>\n<td>10<\/td>\n<td>10.75<\/td>\n<\/tr>\n<tr>\n<td>10.7<\/td>\n<td>10.13<\/td>\n<td>10.75<\/td>\n<\/tr>\n<tr>\n<td>15<\/td>\n<td>14.38<\/td>\n<td>15<\/td>\n<\/tr>\n<tr>\n<td>20.8<\/td>\n<td>20.13<\/td>\n<td>20.75<\/td>\n<\/tr>\n<tr>\n<td>30<\/td>\n<td>29.38<\/td>\n<td>30<\/td>\n<\/tr>\n<tr>\n<td>35.34<\/td>\n<td>34.75<\/td>\n<td>35.25<\/td>\n<\/tr>\n<tr>\n<td>39.57<\/td>\n<td>39<\/td>\n<td>39.5<\/td>\n<\/tr>\n<tr>\n<td>40.20<\/td>\n<td>39.63<\/td>\n<td>40.25<\/td>\n<\/tr>\n<tr>\n<td>57.3<\/td>\n<td>56.63<\/td>\n<td>57.5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6700\u5f00\u59cb\u6211\u662f\u4f30\u6d4b\u540e\u5355\u5143\u683c\u5199\u6307\u5b9a\u5185\u5bb9\u8981\u591a\u5927\uff0c\u4f46\u662f\u7528 openpyxl \u5199\u8868\u683c\u5374\u51fa\u73b0\u4e0d\u591f\u7684\u60c5\u51b5\uff0c\u7136\u540e\u5c31\u591a\u627e\u4e86\u4e00\u4e9b\u4f8b\u5b50\u53d1\u73b0\u786e\u5b9e\u9645\u548c\u8bbe\u7f6e\u7684\u4e0d\u4e00\u81f4\u3002<br \/>\n\u7528\u4e2d\u6587\u641c\u53ea\u627e\u5230 CSDN \u6709\u4f4d\u63d0\u5230\u4f7f\u7528 openpyxl \u53d1\u73b0\u5b9e\u9645\u5217\u5bbd\u6bd4\u8bbe\u7f6e\u7684\u5c0f 0.62\uff0c\u4f46\u4e0a\u9762\u7684\u4f8b\u5b50\u5176\u5b9e\u5c31\u80fd\u63a8\u7ffb\u3002\u6211\u8bd5\u8fc7\u8bbe\u7f6e\u6574\u6570\u5927\u5c0f\uff0c\u786e\u5b9e\u5b9e\u9645\u90fd\u6bd4\u8bbe\u7f6e\u7684\u5c0f 0.62\uff0c\u4f46\u662f\u4e5f\u662f\u6709\u4e0d\u540c\u7684\u3002\u4e0d\u662f\u6240\u6709\u90fd\u662f 0.62 \u7684\u5dee\u503c\u3002<br \/>\n\u6211\u7528\u82f1\u8bed\u63cf\u8ff0\u53bb\u8c37\u6b4c\u641c\uff0c\u548c\u6258\u7ba1\u8fd9\u4e2a\u9879\u76ee\u7684 issues \u53bb\u641c\uff0c\u90fd\u6ca1\u627e\u5230\u63d0\u540c\u6837\u95ee\u9898\u7684\u3002\u53ef\u80fd\u662f\u6211\u63cf\u8ff0\u95ee\u9898\uff0c\u6216\u8005\u6709\u6ca1\u6709\u53ef\u80fd\u548c\u7279\u6b8a\u7684\u8bed\u8a00\u76f8\u5173\uff08\u5355\u5143\u683c\u5927\u5c0f\u6216\u8bb8\u662f\u6309\u7167\u7279\u5b9a\u7684\u5b57\u4f53\u8fdb\u884c\u8ba1\u7b97\u7684\uff09\uff0c\u5728\u4f7f\u7528\u82f1\u8bed\u7684\u8bbe\u5907\u4e0a\uff0c\u6216\u8bb8\u8bbe\u7f6e\u7684\u5927\u5c0f\u5c31\u548c\u5b9e\u9645\u5339\u914d\u4e86\u3002<br \/>\nInitially, I estimated the size needed for the content in each cell and set the column widths and row heights accordingly using openpyxl. However, I found that the actual sizes in Excel did not match the settings, and the content often did not fit properly. After searching online, I found a post on CSDN mentioning that the actual column width in Excel is 0.62 units smaller than the set value when using openpyxl. However, this example actually disproves that statement. I tested with integer values and found that the actual width is indeed 0.62 units smaller in some cases, but this difference is not consistent across all settings. The discrepancy is not always 0.62 units.<br \/>\nWhen I searched in English on Google and checked the issues on the project&#8217;s repository, I couldn&#8217;t find anyone else reporting the same problem. Perhaps my description of the issue was not clear enough, or maybe there is a language-specific factor involved. It&#8217;s possible that the cell size calculations are based on specific fonts, and on devices using English settings, the set sizes might match the actual sizes in Excel.<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E7%A0%94%E7%A9%B6_Research\"><\/span>\u7814\u7a76 Research<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"Test_1\"><\/span>Test 1<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4e0b\u9762\u7684\u4f8b\u5b50\uff0c\u8bbe\u7f6e 5000 \u5217\u5355\u5143\u683c\u7684\u5bbd\u5ea6\u548c 5000 \u884c\u5355\u5143\u683c\u7684\u9ad8\u5ea6\uff0c\u76f8\u90bb\u5355\u5143\u683c\u5927\u5c0f\u5dee\u5f02 0.01\uff0c\u8bbe\u7f6e\u5b8c\u6210\u540e\u4fdd\u5b58\u5230\u6587\u4ef6 test.xlsx\u3002\u7136\u540e\u4f7f\u7528 openpyxl \u8bfb\u53d6\u4fdd\u5b58\u7684\u6587\u4ef6\uff0c\u4f9d\u6b21\u53bb\u8bfb\u53d6\u5bbd\u5ea6\u548c\u9ad8\u5ea6\u503c\uff0c\u6700\u540e\u548c\u8bbe\u7f6e\u503c\u4e00\u8d77\u6253\u5370\u51fa\u6765\u8fdb\u884c\u5bf9\u6bd4\u3002<br \/>\nThe following example sets the widths of 5000 columns and the heights of 5000 rows, with a size difference of 0.01 between adjacent cells. After setting these values, the file is saved as test.xlsx. Then, using openpyxl, the saved file is read to retrieve the width and height values. Finally, these retrieved values are printed alongside the set values for comparison.<\/p>\n<pre><code class=\"language-python\">from openpyxl import Workbook, load_workbook\nfrom openpyxl.utils import get_column_letter\n\nworkbook = Workbook()\nsheet = workbook.active\n\nsizeList = [ round(0.01 * i, 2) for i in range(1, 5000)]\n\nfor i in range(1, len(sizeList) + 1):\n    sheet.column_dimensions[get_column_letter(i)].width = sizeList[i - 1]\n\nfor i in range(1, len(sizeList) + 1):\n    sheet.row_dimensions[i].height = sizeList[i - 1]\n\nworkbook.save(&#039;test.xlsx&#039;)\n\nworkbook = load_workbook(&#039;test.xlsx&#039;)\nsheet = workbook.active\n\nwidthList = []\nheightList = []\n\nfor i in range(1, len(sizeList) + 1):\n    widthList.append(\n        sheet.column_dimensions[get_column_letter(i)].width\n    )\n\nfor i in range(1, len(sizeList) + 1):\n    heightList.append(\n        sheet.row_dimensions[i].height\n    )\n\nfor size, width, height in zip(sizeList, widthList, heightList):\n    print(f&#039;{size} {width} {height}&#039;)<\/code><\/pre>\n<p>\u4ece\u6253\u5370\u7684\u7ed3\u679c\u770b\uff0c\u7528 openpyxl \u8bfb\u53d6\u51fa\u6765\u548c\u8bbe\u7f6e\u7684\u503c\u662f\u4e00\u81f4\u7684\uff0c\u4f46\u662f\u6253\u5f00 Excel \u67e5\u770b\u5c31\u4e0d\u4e00\u81f4\u4e86\uff0c\u73b0\u5728\u63a8\u6d4b openpyxl \u91cc\u8ba1\u7b97\u884c\u9ad8\u548c\u5217\u5bbd\u7684\u65b9\u5f0f\u53ef\u80fd\u548c Excel \u4e0d\u540c\u3002<br \/>\nFrom the printed results, the values read using openpyxl are consistent with the set values. However, when opening the file in Excel, the values do not match. It is now speculated that the way openpyxl calculates row heights and column widths might be different from that of Excel.<br \/>\n<img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2025\/01\/image-1738287735730.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 356px; --smush-placeholder-aspect-ratio: 356\/318;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2025\/01\/image-1738287753491.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 325px; --smush-placeholder-aspect-ratio: 325\/340;\" \/><\/p>\n<p><img decoding=\"async\" data-src=\"https:\/\/blog.iyatt.com\/wp-content\/uploads\/2025\/01\/image-1738287766742.png\" alt=\"file\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 318px; --smush-placeholder-aspect-ratio: 318\/327;\" \/><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Test_2\"><\/span>Test 2<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u4e0a\u4e00\u4e2a\u4f8b\u5b50\u7528 openpyxl \u8bbe\u7f6e\u5355\u5143\u683c\u4fdd\u5b58\u4e86\u6587\u4ef6\uff0c\u8fd9\u91cc\u5c31\u6539\u6210\u7528 Excel \u7684 COM \u63a5\u53e3\u8bfb\u53d6 Excel \u6587\u4ef6\u8fdb\u884c\u5bf9\u6bd4\uff0c\u7ed3\u679c\u4fdd\u5b58\u5230 test.txt \u6587\u4ef6\u4e2d\u3002<br \/>\nIn the previous example, the file was saved using openpyxl to set the cell dimensions. Here, we will use Excel&#8217;s COM interface to read the Excel file for comparison, and the results will be saved to a test.txt file.<\/p>\n<pre><code class=\"language-python\">import win32com.client as wc\nimport os\n\napp = wc.Dispatch(&#039;Excel.Application&#039;)\napp.Visible = False\napp.DisplayAlerts = False\n\nfilePath = os.path.join(\n    os.path.dirname(os.path.abspath(__file__)),\n    &#039;test.xlsx&#039;\n)\nworkbook = app.Workbooks.Open(filePath)\nsheet = workbook.Worksheets(&#039;Sheet&#039;)\n\nsizeList = [ round(0.01 * i, 2) for i in range(1, 5000)]\nwidthList = []\nheightList = []\n\nfor i in range(1, len(sizeList) + 1):\n    widthList.append(\n        sheet.Columns(i).ColumnWidth\n    )\n    heightList.append(\n        sheet.Rows(i).RowHeight\n    )\n\nworkbook.Close(False)\napp.Quit()\n\nwith open(&#039;test.txt&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:\n    for size, width, height in zip(sizeList, widthList, heightList):\n        f.write(f&#039;{size} {width} {height}\\n&#039;)<\/code><\/pre>\n<p>\u4e0b\u9762\u5c31\u662f\u4fdd\u5b58\u7684\u6587\u4ef6\uff0c\u7b2c\u4e00\u5217\u662f\u8bbe\u7f6e\u7684\uff0c\u7b2c\u4e8c\u5217\u662f\u5b9e\u9645\u5217\u5bbd\uff0c\u7b2c\u4e09\u5217\u662f\u5b9e\u9645\u884c\u9ad8\uff0c\u786e\u5b9e openpyxl \u548c Excel \u7684\u4e0d\u4e00\u81f4<br \/>\nHere is the saved file, where the first column represents the set values, the second column represents the actual column widths, and the third column represents the actual row heights. It is evident that there is inconsistency between the values set by openpyxl and those displayed in Excel.<br \/>\n<a href=\"https:\/\/pan.baidu.com\/s\/1yDcLKBy61uVXu0W8R2ERnQ?pwd=i868\">https:\/\/pan.baidu.com\/s\/1yDcLKBy61uVXu0W8R2ERnQ?pwd=i868<\/a><\/p>\n<h1><span class=\"ez-toc-section\" id=\"%E8%A7%84%E5%BE%8B_Pattern\"><\/span>\u89c4\u5f8b Pattern<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u4e0a\u9762\u7684 5000 \u4e2a\u884c\u9ad8\u548c\u5217\u5bbd\u7684\u4f8b\u5b50\uff0c\u6211\u770b\u4e86\u4e00\u4e0b\u3002<br \/>\nExcel \u4e2d\u5b9e\u9645\u7684\u884c\u9ad8\u5fc5\u7136\u662f 0.25 \u7684\u6574\u6570\u500d\uff0c\u4f46\u662f\u6ca1\u770b\u51fa\u6570\u503c\u820d\u5165\u7684\u5177\u4f53\u89c4\u5f8b\u3002<br \/>\n\u5217\u5bbd\u7684\u5c0f\u6570\u90e8\u5206\u5fc5\u7136\u662f .0\u3001.13\u3001.25\u3001.38\u3001.5\u3001.63\u3001.75\u3001.88 \u4e2d\u7684\u4e00\u79cd\u3002<br \/>\nAfter examining the example with 5,000 row heights and column widths, I noticed the following:<br \/>\nThe actual row heights in Excel are always multiples of 0.25. However, I couldn&#8217;t discern a specific rounding pattern for the values.<br \/>\nThe decimal parts of the column widths are always one of the following: .0, .13, .25, .38, .5, .63, .75, .88.<\/p>\n<p>\u6211\u63a8\u6d4b\u8fd9\u662f Excel \u57fa\u4e8e\u663e\u793a\u7684\u8003\u8651\uff0c\u884c\u9ad8\u548c\u5217\u5bbd\u53ea\u80fd\u8bbe\u7f6e\u7279\u5b9a\u503c\uff0c\u5176\u5b83\u503c\u4e5f\u4f1a\u88ab\u201c\u53d6\u6574\u201d\uff0c\u4ee5\u514d\u51fa\u73b0\u4e00\u4e2a\u5b57\u663e\u793a\u4e0d\u5168\u7684\u60c5\u51b5\u3002<br \/>\nI suspect that this is due to display considerations in Excel \u2014 row heights and column widths can only be set to specific values, and other values are &quot;rounded&quot; to ensure that text isn&#8217;t partially cut off during display.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6d4b\u8bd5\u73af\u5883 Testing Environment office 2024 Python 3.13.1 open [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":true,"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[1,649,648,592,594],"tags":[],"class_list":["post-18663","post","type-post","status-publish","format-standard","hentry","category-all","category-excel","category-office","category-python","category-594"],"modified_by":"IYATT-yx","_links":{"self":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/18663","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18663"}],"version-history":[{"count":10,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/18663\/revisions"}],"predecessor-version":[{"id":20448,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=\/wp\/v2\/posts\/18663\/revisions\/20448"}],"wp:attachment":[{"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18663"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18663"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.iyatt.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}