{"id":5235,"date":"2022-04-02T18:34:19","date_gmt":"2022-04-02T10:34:19","guid":{"rendered":"https:\/\/egonlin.com\/?p=5235"},"modified":"2022-04-02T18:34:19","modified_gmt":"2022-04-02T10:34:19","slug":"02-xlwd","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=5235","title":{"rendered":"02 xlwd"},"content":{"rendered":"<h1>xlrd\u6a21\u5757\u64cd\u4f5c<\/h1>\n<h2>1\u3001\u57fa\u672c\u51fd\u6570<\/h2>\n<h3>1.1\u3001\u6253\u5f00workbook\u83b7\u53d6Book\u5bf9\u8c61<\/h3>\n<ul>\n<li>xlrd.open_workbook(filename[, logfile, file_contents, &#8230;])\uff1a\u6253\u5f00excel\u6587\u4ef6<br \/>\nfilename\uff1a\u9700\u64cd\u4f5c\u7684\u6587\u4ef6\u540d\uff08\u5305\u62ec\u6587\u4ef6\u8def\u5f84\u548c\u6587\u4ef6\u540d\u79f0\uff09\uff1b<\/li>\n<\/ul>\n<p>\u82e5filename\u4e0d\u5b58\u5728\uff0c\u5219\u62a5\u9519FileNotFoundError\uff1b<br \/>\n\u82e5filename\u5b58\u5728\uff0c\u5219\u8fd4\u56de\u503c\u4e3axlrd.book.Book\u5bf9\u8c61<\/p>\n<h3>1.2\u3001\u83b7\u53d6Book\u5bf9\u8c61\u4e2d\u6240\u6709sheet\u540d\u79f0<\/h3>\n<ul>\n<li>BookObject.sheet_names()\uff1a\u83b7\u53d6\u6240\u6709sheet\u7684\u540d\u79f0\uff0c\u4ee5\u5217\u8868\u65b9\u5f0f\u663e\u793a<\/li>\n<\/ul>\n<h3>1.3\u3001\u83b7\u53d6Book\u5bf9\u8c61\u4e2d\u6240\u6709Sheet\u5bf9\u8c61<\/h3>\n<ul>\n<li>BookObject.sheets()\uff1a\u83b7\u53d6\u6240\u6709sheet\u7684\u5bf9\u8c61\uff0c\u4ee5\u5217\u8868\u5f62\u5f0f\u663e\u793a<\/li>\n<li>BookObject.sheet_by_index(sheetx)\uff1a\u901a\u8fc7sheet\u7d22\u5f15\u83b7\u53d6\u6240\u9700sheet\u5bf9\u8c61<br \/>\nsheetx\u4e3a\u7d22\u5f15\u503c\uff0c\u7d22\u5f15\u4ece0\u5f00\u59cb\u8ba1\u7b97\uff1b<br \/>\n\u82e5sheetx\u8d85\u51fa\u7d22\u5f15\u8303\u56f4\uff0c\u5219\u62a5\u9519IndexError\uff1b<br \/>\n\u82e5sheetx\u5728\u7d22\u5f15\u8303\u56f4\u5185\uff0c\u5219\u8fd4\u56de\u503c\u4e3axlrd.sheet.Sheet\u5bf9\u8c61<\/li>\n<li>BookObject.sheet_by_name(sheet_name)\uff1a\u901a\u8fc7sheet\u540d\u79f0\u83b7\u53d6\u6240\u9700sheet\u5bf9\u8c61<br \/>\nsheet_name\u4e3asheet\u540d\u79f0\uff1b<br \/>\n\u82e5sheet_name\u4e0d\u5b58\u5728\uff0c\u5219\u62a5\u9519xlrd.biffh.XLRDError\uff1b<br \/>\n\u82e5sheet_name\u5b58\u5728\uff0c\u5219\u8fd4\u56de\u503c\u4e3axlrd.sheet.Sheet\u5bf9\u8c61<\/li>\n<\/ul>\n<h3>1.4\u3001\u5224\u65adBook\u5bf9\u8c61\u4e2d\u67d0\u4e2asheet\u662f\u5426\u5bfc\u5165<\/h3>\n<ul>\n<li>BookObject.sheet_loaded(sheet_name_or_index)\uff1a\u901a\u8fc7sheet\u540d\u79f0\u6216\u7d22\u5f15\u5224\u65ad\u8be5sheet\u662f\u5426\u5bfc\u5165\u6210\u529f<br \/>\n\u8fd4\u56de\u503c\u4e3abool\u7c7b\u578b\uff0c\u82e5\u8fd4\u56de\u503c\u4e3aTrue\u8868\u793a\u5df2\u5bfc\u5165\uff1b\u82e5\u8fd4\u56de\u503c\u4e3aFalse\u8868\u793a\u672a\u5bfc\u5165<\/li>\n<\/ul>\n<h3>1.5\u3001\u5bf9Sheet\u5bf9\u8c61\u4e2d\u7684\u884c\u64cd\u4f5c<\/h3>\n<ul>\n<li>SheetObject.nrows\uff1a\u83b7\u53d6\u67d0sheet\u4e2d\u7684\u6709\u6548\u884c\u6570<\/li>\n<li>SheetObject.row_values(rowx[, start_colx=0, end_colx=None])\uff1a\u83b7\u53d6sheet\u4e2d\u7b2crowx+1\u884c\u4ecestart_colx\u5217\u5230end_colx\u5217\u7684\u6570\u636e\uff0c\u8fd4\u56de\u503c\u4e3a\u5217\u8868\u3002<br \/>\n\u82e5rowx\u5728\u7d22\u5f15\u8303\u56f4\u5185\uff0c\u4ee5\u5217\u8868\u5f62\u5f0f\u8fd4\u56de\u6570\u636e\uff1b<br \/>\n\u82e5rowx\u4e0d\u5728\u7d22\u5f15\u8303\u56f4\u5185\uff0c\u5219\u62a5\u9519IndexError<\/li>\n<li>SheetObject.row(rowx)\uff1a\u83b7\u53d6sheet\u4e2d\u7b2crowx+1\u884c\u5355\u5143\uff0c\u8fd4\u56de\u503c\u4e3a\u5217\u8868\uff1b<br \/>\n\u5217\u8868\u6bcf\u4e2a\u503c\u5185\u5bb9\u4e3a\uff1a \u5355\u5143\u7c7b\u578b:\u5355\u5143\u6570\u636e<\/li>\n<li>SheetObject.row_slice(rowx[, start_colx=0, end_colx=None])\uff1a\u4ee5\u5207\u7247\u65b9\u5f0f\u83b7\u53d6sheet\u4e2d\u7b2crowx+1\u884c\u4ecestart_colx\u5217\u5230end_colx\u5217\u7684\u5355\u5143\uff0c\u8fd4\u56de\u503c\u4e3a\u5217\u8868\uff1b<br \/>\n\u5217\u8868\u6bcf\u4e2a\u503c\u5185\u5bb9\u4e3a\uff1a \u5355\u5143\u7c7b\u578b:\u5355\u5143\u6570\u636e<\/li>\n<li>SheetObject.row_types(rowx[, start_colx=0, end_colx=None])\uff1a\u83b7\u53d6sheet\u4e2d\u7b2crowx+1\u884c\u4ecestart_colx\u5217\u5230end_colx\u5217\u7684\u5355\u5143\u7c7b\u578b\uff0c\u8fd4\u56de\u503c\u4e3aarray.array\u7c7b\u578b\u3002<br \/>\n\u5355\u5143\u7c7b\u578bctype\uff1aempty\u4e3a0\uff0cstring\u4e3a1\uff0cnumber\u4e3a2\uff0cdate\u4e3a3\uff0cboolean\u4e3a4\uff0c error\u4e3a5\uff08\u5de6\u8fb9\u4e3a\u7c7b\u578b\uff0c\u53f3\u8fb9\u4e3a\u7c7b\u578b\u5bf9\u5e94\u7684\u503c\uff09\uff1b<\/li>\n<li>SheetObject.row_len(rowx)\uff1a\u83b7\u53d6sheet\u4e2d\u7b2crowx+1\u884c\u7684\u957f\u5ea6<\/li>\n<\/ul>\n<blockquote>\n<p>rowx\uff1a\u884c\u6807\uff0c\u884c\u6570\u4ece0\u5f00\u59cb\u8ba1\u7b97\uff080\u8868\u793a\u7b2c\u4e00\u884c\uff09, \u5fc5\u586b\u53c2\u6570\uff1b<br \/>\nstart_colx\uff1a\u8d77\u59cb\u5217\uff0c\u8868\u793a\u4ecestart_colx\u5217\u5f00\u59cb\u53d6\u503c\uff0c\u5305\u62ec\u7b2cstart_colx\u7684\u503c\uff1b<br \/>\nend_colx\uff1a\u7ed3\u675f\u5217\uff0c\u8868\u793a\u5230end_colx\u5217\u7ed3\u675f\u53d6\u503c\uff0c\u4e0d\u5305\u62ec\u7b2cend_colx\u7684\u503c\uff1b<\/p>\n<\/blockquote>\n<p>start_colx\u9ed8\u8ba4\u4e3a0\uff0cend_colx\u9ed8\u8ba4\u4e3aNone\uff1a\u8868\u793a\u53d6\u6574\u884c\u76f8\u5173\u6570\u636e\uff1b<\/p>\n<ul>\n<li>SheetObject.get_rows()\uff1a\u83b7\u53d6\u67d0\u4e00sheet\u6240\u6709\u884c\u7684\u751f\u6210\u5668<\/li>\n<\/ul>\n<h3>1.6\u3001\u5bf9Sheet\u5bf9\u8c61\u4e2d\u7684\u5217\u64cd\u4f5c<\/h3>\n<ul>\n<li>SheetObject.ncols\uff1a\u83b7\u53d6\u67d0sheet\u4e2d\u7684\u6709\u6548\u5217\u6570<\/li>\n<li>SheetObject.col_values(self, colx[, start_rowx=0, end_rowx=None])\uff1a\u83b7\u53d6sheet\u4e2d\u7b2ccolx+1\u5217\u4ecestart_rowx\u884c\u5230end_rowx\u884c\u7684\u6570\u636e\uff0c\u8fd4\u56de\u503c\u4e3a\u5217\u8868\u3002<\/li>\n<li>SheetObject.col_slice(colx[, start_rowx=0, end_rowx=None])\uff1a\u4ee5\u5207\u7247\u65b9\u5f0f\u83b7\u53d6sheet\u4e2d\u7b2ccolx+1\u5217\u4ecestart_rowx\u884c\u5230end_rowx\u884c\u7684\u6570\u636e\uff0c\u8fd4\u56de\u503c\u4e3a\u5217\u8868\u3002<br \/>\n\u5217\u8868\u6bcf\u4e2a\u503c\u5185\u5bb9\u4e3a\uff1a \u5355\u5143\u7c7b\u578b:\u5355\u5143\u6570\u636e<\/li>\n<li>SheetObject.col_types(colx[, start_rowx=0, end_rowx=None])\uff1a\u83b7\u53d6sheet\u4e2d\u7b2ccolx+1\u5217\u4ecestart_rowx\u884c\u5230end_rowx\u884c\u7684\u5355\u5143\u7c7b\u578b\uff0c\u8fd4\u56de\u503c\u4e3a\u5217\u8868\uff1b<\/li>\n<\/ul>\n<h3>1.7\u3001 \u5bf9Sheet\u5bf9\u8c61\u7684\u5355\u5143\u683c\u6267\u884c\u64cd\u4f5c<\/h3>\n<ul>\n<li>ShellObeject.cell(rowx, colx)\uff1a\u83b7\u53d6sheet\u5bf9\u8c61\u4e2d\u7b2crowx+1\u884c\uff0c\u7b2ccolx+1\u5217\u7684\u5355\u5143\u5bf9\u8c61\uff0c\u8fd4\u56de\u503c\u4e3a&#8217;xlrd.sheet.Cell&#8217;\u7c7b\u578b\uff0c\u8fd4\u56de\u503c\u7684\u683c\u5f0f\u4e3a\u201c\u5355\u5143\u7c7b\u578b:\u5355\u5143\u503c\u201d\u3002<\/li>\n<li>ShellObject.cell_value(rowx, colx)\uff1a\u83b7\u53d6sheet\u5bf9\u8c61\u4e2d\u7b2crowx+1\u884c\uff0c\u7b2ccolx+1\u5217\u7684\u5355\u5143\u6570\u636e\uff0c\u8fd4\u56de\u503c\u4e3a\u5f53\u524d\u503c\u7684\u7c7b\u578b\uff08\u5982float\u3001int\u3001string&#8230;\uff09\uff1b<\/li>\n<li>ShellObject.cell_type(rowx, colx)\uff1a\u83b7\u53d6sheet\u5bf9\u8c61\u4e2d\u7b2crowx+1\u884c\uff0c\u7b2ccolx+1\u5217\u7684\u5355\u5143\u6570\u636e\u7c7b\u578b\u503c\uff1b<br \/>\n\u5355\u5143\u7c7b\u578bctype\uff1aempty\u4e3a0\uff0cstring\u4e3a1\uff0cnumber\u4e3a2\uff0cdate\u4e3a3\uff0cboolean\u4e3a4\uff0c error\u4e3a5\uff1b<\/li>\n<\/ul>\n<pre><code class=\"language-python\">import xlrd\n\n&quot;&quot;&quot; \u6253\u5f00excel\u8868\u683c&quot;&quot;&quot;\nworkbook = xlrd.open_workbook(&quot;\u6d4b\u8bd5.xlsx&quot;)\nprint(workbook)             # \u7ed3\u679c\uff1a&lt;xlrd.book.Book object at 0x000000000291B128&gt;\n\n&quot;&quot;&quot; \u83b7\u53d6\u6240\u6709sheet\u540d\u79f0&quot;&quot;&quot;\nsheet_names = workbook.sheet_names()\nprint(sheet_names)          # \u7ed3\u679c\uff1a[&#039;\u88681&#039;, &#039;Sheet2&#039;]\n\n&quot;&quot;&quot; \u83b7\u53d6\u6240\u6709\u6216\u67d0\u4e2asheet\u5bf9\u8c61&quot;&quot;&quot;\n# \u83b7\u53d6\u6240\u6709\u7684sheet\u5bf9\u8c61\nsheets_object = workbook.sheets()\nprint(sheets_object)        # \u7ed3\u679c\uff1a[&lt;xlrd.sheet.Sheet object at 0x0000000002956710&gt;, &lt;xlrd.sheet.Sheet object at 0x0000000002956AC8&gt;]\n# \u901a\u8fc7index\u83b7\u53d6\u7b2c\u4e00\u4e2asheet\u5bf9\u8c61\nsheet1_object = workbook.sheet_by_index(0)\nprint(sheet1_object)        # \u7ed3\u679c\uff1a&lt;xlrd.sheet.Sheet object at 0x0000000002956710&gt;\n# \u901a\u8fc7name\u83b7\u53d6\u7b2c\u4e00\u4e2asheet\u5bf9\u8c61\nsheet1_object = workbook.sheet_by_name(sheet_name=&quot;\u88681&quot;)\nprint(sheet1_object)        # \u7ed3\u679c\uff1a&lt;xlrd.sheet.Sheet object at 0x0000000002956710&gt;\n\n&quot;&quot;&quot; \u5224\u65ad\u67d0\u4e2asheet\u662f\u5426\u5df2\u5bfc\u5165&quot;&quot;&quot;\n# \u901a\u8fc7index\u5224\u65adsheet1\u662f\u5426\u5bfc\u5165\nsheet1_is_load = workbook.sheet_loaded(sheet_name_or_index=0)\nprint(sheet1_is_load)       # \u7ed3\u679c\uff1aTrue\n# \u901a\u8fc7sheet\u540d\u79f0\u5224\u65adsheet1\u662f\u5426\u5bfc\u5165\nsheet1_is_load = workbook.sheet_loaded(sheet_name_or_index=&quot;\u88681&quot;)\nprint(sheet1_is_load)       # \u7ed3\u679c\uff1aTrue\n\n&quot;&quot;&quot; \u5bf9sheet\u5bf9\u8c61\u4e2d\u7684\u884c\u6267\u884c\u64cd\u4f5c\uff1a\u5982\u6709\u6548\u884c\u6570\u3001\u67d0\u884c\u4ecen1\u5230n2\u5217\u7684\u6570\u636e\u3001\u67d0\u884c\u7684\u5355\u5143\u548c\u7c7b\u578b\u3001\u67d0\u884c\u7684\u957f\u5ea6...... &quot;&quot;&quot;\n# \u83b7\u53d6sheet1\u4e2d\u7684\u6709\u6548\u884c\u6570\nnrows = sheet1_object.nrows\nprint(nrows)                # \u7ed3\u679c\uff1a5\n# \u83b7\u53d6sheet1\u4e2d\u7b2c3\u884c\u7684\u6570\u636e\nall_row_values = sheet1_object.row_values(rowx=2)\nprint(all_row_values)           # \u7ed3\u679c\uff1a[3.0, &#039;b&#039;, 1, &#039;&#039;]\nrow_values = sheet1_object.row_values(rowx=2, start_colx=1, end_colx=3)\nprint(row_values)               # \u7ed3\u679c\uff1a[&#039;b&#039;, 1]\n# \u83b7\u53d6sheet1\u4e2d\u7b2c3\u884c\u7684\u5355\u5143\u5bf9\u8c61\nrow_object = sheet1_object.row(rowx=2)\nprint(row_object)               # \u7ed3\u679c\uff1a[number:3.0, text:&#039;b&#039;, bool:1, empty:&#039;&#039;]\n# \u83b7\u53d6sheet1\u4e2d\u7b2c3\u884c\u7684\u5355\u5143\nrow_slice = sheet1_object.row_slice(rowx=2)\nprint(row_slice)                # \u7ed3\u679c\uff1a[number:3.0, text:&#039;b&#039;, bool:1, empty:&#039;&#039;]\n# \u83b7\u53d6sheet1\u4e2d\u7b2c3\u884c\u7684\u5355\u5143\u7c7b\u578b\nrow_types = sheet1_object.row_types(rowx=2)\nprint(row_types)                # \u7ed3\u679c\uff1aarray(&#039;B&#039;, [2, 1, 4, 0])\n# \u83b7\u53d6sheet1\u4e2d\u7b2c3\u884c\u7684\u957f\u5ea6\nrow_len = sheet1_object.row_len(rowx=2)\nprint(row_len)                  # \u7ed3\u679c\uff1a4\n# \u83b7\u53d6sheet1\u6240\u6709\u884c\u7684\u751f\u6210\u5668\nrows_generator = sheet1_object.get_rows()\nprint(rows_generator)           # \u7ed3\u679c\uff1a&lt;generator object Sheet.get_rows.&lt;locals&gt;.&lt;genexpr&gt; at 0x00000000028D8BA0&gt;\n\n&quot;&quot;&quot; \u5bf9sheet\u5bf9\u8c61\u4e2d\u7684\u5217\u6267\u884c\u64cd\u4f5c\uff1a&quot;&quot;&quot;\n# \u83b7\u53d6sheet1\u4e2d\u7684\u6709\u6548\u5217\u6570\nncols = sheet1_object.ncols\nprint(ncols)                # \u7ed3\u679c\uff1a4\n# \u83b7\u53d6sheet1\u4e2d\u7b2ccolx+1\u5217\u7684\u6570\u636e\ncol_values = sheet1_object.col_values(colx=1)\nprint(col_values)           # \u7ed3\u679c\uff1a[&#039;\u6d4b\u8bd5&#039;, &#039;a&#039;, &#039;b&#039;, &#039;c&#039;, &#039;d&#039;]\ncol_values1 = sheet1_object.col_values(1, 1, 3)\nprint(col_values1)          # \u7ed3\u679c\uff1a[&#039;a&#039;, &#039;b&#039;]\n# \u83b7\u53d6sheet1\u4e2d\u7b2c2\u5217\u7684\u5355\u5143\ncol_slice = sheet1_object.col_slice(colx=1)\nprint(col_slice)            # \u7ed3\u679c\uff1a[text:&#039;\u6d4b\u8bd5&#039;, text:&#039;a&#039;, text:&#039;b&#039;, text:&#039;c&#039;, text:&#039;d&#039;]\n# \u83b7\u53d6sheet1\u4e2d\u7b2c2\u5217\u7684\u5355\u5143\u7c7b\u578b\ncol_types = sheet1_object.col_types(colx=1)\nprint(col_types)            # \u7ed3\u679c\uff1a[1, 1, 1, 1, 1]\n\n&quot;&quot;&quot;\u5bf9sheet\u5bf9\u8c61\u4e2d\u7684\u5355\u5143\u6267\u884c\u64cd\u4f5c&quot;&quot;&quot;\n# \u83b7\u53d6sheet1\u4e2d\u7b2crowx+1\u884c\uff0c\u7b2ccolx+1\u5217\u7684\u5355\u5143\u5bf9\u8c61\ncell_info = sheet1_object.cell(rowx=1, colx=2)\nprint(cell_info)           # \u7ed3\u679c: text:&#039;m&#039;\nprint(type(cell_info))     # \u7ed3\u679c\uff1a&lt;class &#039;xlrd.sheet.Cell&#039;&gt;\n# \u83b7\u53d6sheet1\u4e2d\u7b2crowx+1\u884c\uff0c\u7b2ccolx+1\u5217\u7684\u5355\u5143\u503c\ncell_value = sheet1_object.cell_value(rowx=1, colx=2)\nprint(cell_value)           # \u7ed3\u679c: m\n# \u83b7\u53d6sheet1\u4e2d\u7b2crowx+1\u884c\uff0c\u7b2ccolx+1\u5217\u7684\u5355\u5143\u7c7b\u578b\u503c\ncell_type = sheet1_object.cell_type(rowx=1, colx=2)\nprint(cell_type)            # \u7ed3\u679c\uff1a1<\/code><\/pre>\n<h2>2\u3001\u8bfb\u53d6\u5355\u5143\u683c\u5185\u5bb9\u4e3a\u65e5\u671f\/\u65f6\u95f4\u7684\u65b9\u5f0f<\/h2>\n<p>\u82e5\u5355\u5143\u683c\u5185\u5bb9\u7684\u7c7b\u578b\u4e3adate\uff0c\u5373ctype\u503c\u4e3a3\u65f6\uff0c\u5219\u4ee3\u8868\u6b64\u5355\u5143\u683c\u7684\u6570\u636e\u4e3a\u65e5\u671f<\/p>\n<ul>\n<li>xlrd.xldate_as_tuple(xldate, datemode)\uff1a\u82e5xldate\u6570\u636e\u4e3a\u65e5\u671f\/\u65f6\u95f4\uff0c\u5219\u5c06\u8f6c\u5316\u4e3a\u9002\u7528\u4e8edatetime\u7684\u5143\u7ec4\uff1b<br \/>\n\u8fd4\u56de\u503c\u4e3a\u5143\u7ec4\uff0c\u683c\u5f0f\u4e3a\uff1a(year, month, day, hour, minute, nearest_second)<br \/>\nxldate\uff1asheet\u5bf9\u8c61\u4e2d\u5355\u5143\u683c\u7684\u6570\u636e<br \/>\ndatemode\uff1a\u65e5\u671f\u6a21\u5f0f<\/li>\n<\/ul>\n<pre><code class=\"language-python\">&quot;&quot;&quot; \u8bfb\u53d6sheet\u5bf9\u8c61\u4e2d\u7684\u65e5\u671f &quot;&quot;&quot;\nimport datetime\nworkbook = xlrd.open_workbook(&quot;\u6d4b\u8bd5.xlsx&quot;)\nsheet2_object = workbook.sheet_by_name(&quot;Sheet2&quot;)\n# value_type = sheet2_object.cell(0, 1).ctype\nvalue_type = sheet2_object.cell_type(0, 1)\nprint(value_type)  # \u7ed3\u679c\uff1a3\nif value_type == 3:\n    print(&quot;\u5355\u5143\u683c\u6570\u636e\u4e3a\u65e5\u671f&quot;)\n    cell_value = sheet2_object.cell_value(0, 1)\n    print(cell_value)  # \u7ed3\u679c\uff1a43506.0\n    date_tuple = xlrd.xldate_as_tuple(cell_value, workbook.datemode)\n    print(date_tuple)  # \u7ed3\u679c\uff1a(2019, 2, 10, 0, 0, 0)\n    date_value = datetime.date(*date_tuple[:3])\n    print(date_value)  # \u7ed3\u679c\uff1a2019-02-10\n    date_format = date_value.strftime(&#039;%Y\/%m\/%d&#039;)\n    print(date_format)  # \u7ed3\u679c\uff1a2019\/02\/10<\/code><\/pre>\n<h2>3\u3001\u5bf9\u5408\u5e76\u5355\u5143\u683c\u6267\u884c\u64cd\u4f5c<\/h2>\n<p>\uff081\uff09 \u83b7\u53d6\u5408\u5e76\u7684\u5355\u5143\u683c<br \/>\n\u82e5\u8868\u683c\u4e3axls\u683c\u5f0f\u7684\uff0c\u6253\u5f00workbook\u65f6\u9700\u5c06formatting_info\u8bbe\u7f6e\u4e3aTrue\uff0c\u7136\u540e\u518d\u83b7\u53d6sheet\u4e2d\u7684\u5408\u5e76\u5355\u5143\u683c\uff1b<br \/>\n\u82e5\u8868\u683c\u6709xlsx\u683c\u5f0f\u7684\uff0c\u6253\u5f00workbook\u65f6\u4fdd\u6301formatting_info\u4e3a\u9ed8\u8ba4\u503cFalse\uff0c\u7136\u540e\u518d\u83b7\u53d6sheet\u4e2d\u7684\u5408\u5e76\u5355\u5143\u683c\uff1b<\/p>\n<ul>\n<li>SheetObject.merged_cells\uff1a\u83b7\u53d6sheet\u4e2d\u5408\u5e76\u5355\u5143\u683c\u7684\u4fe1\u606f\uff0c\u8fd4\u56de\u503c\u4e3a\u5217\u8868\uff1b<br \/>\n\u82e5sheet\u5bf9\u8c61\u4e2d\u65e0\u5408\u5e76\u5355\u5143\u683c\uff0c\u5219\u8fd4\u56de\u503c\u4e3a\u7a7a\u5217\u8868\uff1b<br \/>\n\u5217\u8868\u4e2d\u6bcf\u4e2a\u5355\u5143\u683c\u4fe1\u606f\u7684\u683c\u5f0f\u4e3a\uff1a(row_start, row_end, col_start, col_end)<br \/>\nrow_start\u8868\u793a\u5408\u5e76\u5355\u5143\u683c\u7684\u8d77\u59cb\u884c\uff1b<br \/>\nrow_end\u8868\u793a\u5408\u5e76\u5355\u5143\u683c\u7684\u7ed3\u675f\u884c\uff1b<br \/>\ncol_start\u8868\u793a\u5408\u5e76\u5355\u5143\u683c\u7684\u8d77\u59cb\u5217\uff1b<br \/>\ncol_end\u8868\u793a\u5408\u5e76\u5355\u5143\u683c\u7684\u7ed3\u675f\u5217\uff1b<br \/>\n\u5408\u5e76\u5355\u5143\u683c\u7684\u884c\u53d6\u503c\u8303\u56f4\u4e3a[row_start, row_end)\uff0c\u5305\u62ecrow_start\uff0c\u4e0d\u5305\u62ecrow_end\uff1b<br \/>\n\u5408\u5e76\u5355\u5143\u683c\u7684\u5217\u53d6\u503c\u8303\u56f4\u4e3a[col_start, col_end)\uff0c\u5305\u62eccol_start\uff0c\u4e0d\u5305\u62eccol_end\uff1b<br \/>\n\u5982\uff1a(1, 3, 4, 6)\uff1a\u8868\u793a\u4ece\u7b2c1\u52302\u884c\u5408\u5e76\uff0c\u4ece\u7b2c4\u5230\u7b2c5\u5217\u5408\u5e76\uff1b<\/li>\n<\/ul>\n<p>\uff082\uff09\u8bfb\u53d6\u5408\u5e76\u5355\u5143\u683c\u7684\u6570\u636e<br \/>\n\u8bfb\u53d6\u5408\u5e76\u5355\u5143\u683c\u6570\u636e\u4ec5\u9700merged_cells\u6570\u636e\u4e2d\u7684row_start\u548ccol_start\u8fd9\u4e24\u4e2a\u7d22\u5f15\u5373\u53ef<\/p>\n<ul>\n<li>SheetObject.cell_value(rowx=row_start, colx=col_start)\uff1a\u83b7\u53d6\u5408\u5e76\u5355\u5143\u683c\u7684\u6570\u636e<\/li>\n<\/ul>\n<pre><code class=\"language-python\">&quot;&quot;&quot; \u83b7\u53d6\u5408\u5e76\u7684\u5355\u5143\u683c\u5e76\u8bfb\u53d6\u5355\u5143\u683c\u6570\u636e &quot;&quot;&quot;\n# \u83b7\u53d6xlsx\u683c\u5f0f\u7684excel\u6587\u4ef6\u4e2d\u7684\u5408\u5e76\u5355\u5143\u683c\nworkbook = xlrd.open_workbook(&quot;\u6d4b\u8bd5.xlsx&quot;)\nsheet2_object = workbook.sheet_by_name(&quot;Sheet2&quot;)\nprint(sheet2_object.merged_cells)   # \u7ed3\u679c: [(1, 2, 0, 2), (3, 6, 0, 2)]\n# \u83b7\u53d6xls\u683c\u5f0f\u7684excel\u6587\u4ef6\u4e2d\u7684\u5408\u5e76\u5355\u5143\u683c\nworkbook1 = xlrd.open_workbook(&quot;\u6d4b\u8bd5.xls&quot;, formatting_info=True)\nsheet2_object1 = workbook1.sheet_by_name(&quot;Sheet2&quot;)\nprint(sheet2_object1.merged_cells)   # \u7ed3\u679c: [(1, 2, 0, 2), (3, 6, 0, 2)]\n\n# \u8bfb\u53d6\u5408\u5e76\u5355\u5143\u683c\u6570\u636e\uff08\u4ec5\u9700\u201c\u8d77\u59cb\u884c\u8d77\u59cb\u5217\u201d\u5373\u53ef\u83b7\u53d6\u6570\u636e\uff09\nprint(sheet2_object.cell_value(1, 0))   # \u7ed3\u679c\uff1a\u5408\u5e76\nprint(sheet2_object.cell_value(3, 0))   # \u7ed3\u679c\uff1a\u5408\u5e762\n# \u6216\u4f7f\u7528for\u5faa\u73af\u83b7\u53d6\u6240\u6709\u7684\u5408\u5e76\u5355\u5143\u683c\u6570\u636e\nfor (row_start, row_end, col_start, col_end) in sheet2_object.merged_cells:\n    print(sheet2_object.cell_value(rowx=row_start, colx=col_start))<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>xlrd\u6a21\u5757\u64cd\u4f5c 1\u3001\u57fa\u672c\u51fd\u6570 1.1\u3001\u6253\u5f00workbook\u83b7\u53d6Book\u5bf9\u8c61 xlrd.open_workbo [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":5211,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[371,379],"tags":[],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/5235"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5235"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/5235\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/media\/5211"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}