{"id":1113,"date":"2023-01-15T20:14:09","date_gmt":"2023-01-15T12:14:09","guid":{"rendered":"http:\/\/viplao.com\/?p=1113"},"modified":"2023-01-15T20:14:09","modified_gmt":"2023-01-15T12:14:09","slug":"%e8%bf%90%e7%bb%b4%e5%b7%a5%e5%85%b7-%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90%e4%b8%8e%e6%95%b0%e6%8d%ae%e8%bf%90%e8%90%a5-excel-%e5%b8%b8%e8%a7%84%e5%a4%84%e7%90%86%e5%ae%9e%e4%be%8b","status":"publish","type":"post","link":"http:\/\/viplao.com\/index.php\/2023\/01\/15\/%e8%bf%90%e7%bb%b4%e5%b7%a5%e5%85%b7-%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90%e4%b8%8e%e6%95%b0%e6%8d%ae%e8%bf%90%e8%90%a5-excel-%e5%b8%b8%e8%a7%84%e5%a4%84%e7%90%86%e5%ae%9e%e4%be%8b\/","title":{"rendered":"[\u8fd0\u7ef4\u5de5\u5177] \u6570\u636e\u5206\u6790\u4e0e\u6570\u636e\u8fd0\u8425 \u2013 excel \u5e38\u89c4\u5904\u7406\u5b9e\u4f8b"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>\u7b80\u5355\u7684\u8bfb\u53d6excel \u6570\u636e <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import xlwings as xw\r\nimport pandas as pd\r\napp=xw.App(visible=True,add_book=False)\r\nwb=app.books.open('D:\\Excel\\8.1.1\u8282\\\u8d85\u5e02\u9500\u552e\u6570\u636e2020-9.xlsx')\r\nsht=wb.sheets('\u9500\u552e\u6570\u636e')\r\n\r\ndata_pd=sht.range('A1').options(pd.DataFrame,header=1,index=False,expand='table').value  \r\n#print(data_pd)\r\ndata_sift=data_pd.groupby(&#91;'\u5546\u54c1\u7801','\u5546\u54c1\u540d\u79f0']).aggregate({'\u6570\u91cf':'sum','\u552e\u4ef7':'count'})\r\n#print(data_sift)\r\ndata_sort=data_sift.sort_values(by=&#91;'\u6570\u91cf'],ascending=False).head(10)\r\nprint(data_sort)\r\n\r\nwb.close()\r\napp.quit()\n\n\n\n                   \u6570\u91cf   \u552e\u4ef7\r\n\u5546\u54c1\u7801   \u5546\u54c1\u540d\u79f0                 \r\n04001 400g\u6c81\u5dde\u9ec4    165.0  165\r\n03001 300g\u58f6\u74f6\u67a3    163.0  163\r\n07004 \u6c34\u6676\u68a8        141.0  141\r\n08001 \u901a\u5fc3\u9762        121.0  101\r\n06003 \u873b\u8713\u6251\u514b       121.0  101\r\n06023 \u5b89\u5229\u9999\u7682       120.0  120\r\n05007 \u725b\u8089\u793c\u76d26      120.0   40\r\n09003 \u8299\u84c9\u738b        104.0  104\r\n02004 10\u5e7445\u00b0\u5409\u7965\u6c7e  102.0  102\r\n07001 \u9999\u74dc         101.0  101<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import xlwings as xw\r\nimport pandas as pd\r\nimport os\r\nfile_path='D:\\Excel\\8.1.2\u8282\\\u5546\u54c1\u5206\u6790'\r\nfile_list=os.listdir(file_path)\r\napp=xw.App(visible=True,add_book=False)\r\ndata_pd=pd.DataFrame()\r\nfor x in file_list:\r\n    if x.startswith('~$'):\r\n        continue\r\n    wb=app.books.open(file_path+'\\\\'+x)\r\n    sht=wb.sheets('\u9500\u552e\u6570\u636e')\r\n    data1=sht.range('A1').options(pd.DataFrame,header=1,index=False,expand='table').value  \r\n    data_pd=data_pd.append(data1)\r\n    \r\ndata_sift=data_pd.groupby(&#91;'\u5546\u54c1\u7801','\u5546\u54c1\u540d\u79f0']).aggregate({'\u6570\u91cf':'sum','\u9500\u552e\u91d1\u989d':'max'})\r\ndata_sort=data_sift.sort_values(by=&#91;'\u6570\u91cf','\u9500\u552e\u91d1\u989d'],ascending=False).head(10)\r\nprint(data_sort)\n\n\u6279\u91cf\u66ff\u6362\u5de5\u4f5c\u7c3f\u7684\u5355\u5143\u683c\u6570\u636e\nfrom pathlib import Path\r\nimport xlwings as xw\r\nsrc_folder = Path('D:\\\\python\\\\app_excel\\\\use python6\\\\\u6708\u9500\u552e\u7edf\u8ba1\\\\')\r\nfile_list = list(src_folder.glob('*.xlsx'))\r\napp = xw.App(visible=False, add_book=False)\r\nfor i in file_list:\r\n    if i.name.startswith('~$'):\r\n        continue\r\n    workbook = app.books.open(i)\r\n    for j in workbook.sheets:\r\n        data = j&#91;'A2'].expand('table').value\r\n        for index, val in enumerate(data):\r\n            if val&#91;2] == '\u80cc\u5305':\r\n                val&#91;2] = '\u53cc\u80a9\u5305'\r\n                data&#91;index] = val\r\n        j&#91;'A2'].expand('table').value = data\r\n    workbook.save()\r\n    workbook.close()\r\napp.quit()\n                    \u6570\u91cf   \u9500\u552e\u91d1\u989d\r\n\u5546\u54c1\u7801   \u5546\u54c1\u540d\u79f0                   \r\n04001 400g\u6c81\u5dde\u9ec4    495.0    6.5\r\n03001 300g\u58f6\u74f6\u67a3    489.0   10.0\r\n07004 \u6c34\u6676\u68a8        423.0    2.0\r\n06003 \u873b\u8713\u6251\u514b       363.0    6.0\r\n08001 \u901a\u5fc3\u9762        363.0    6.0\r\n05007 \u725b\u8089\u793c\u76d26      360.0  425.0\r\n06023 \u5b89\u5229\u9999\u7682       360.0   18.0\r\n09003 \u8299\u84c9\u738b        312.0   35.0\r\n02004 10\u5e7445\u00b0\u5409\u7965\u6c7e  306.0   98.0\r\n09006 \u4e2d\u5357\u6d770.8     303.0    8.0<\/code><\/pre>\n\n\n\n<p>\u5c06\u591a\u4e2a\u5de5\u4f5c\u8868\u5408\u5e76\u4e3a\u4e00\u4e2a\u5de5\u4f5c\u8868<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pathlib import Path\r\nimport xlwings as xw\r\nsrc_folder = Path('F:\\\\\u4ee3\u7801\u6587\u4ef6\\\\\u7b2c6\u7ae0\\\\\u6708\u9500\u552e\u7edf\u8ba1\\\\')\r\nfile_list = list(src_folder.glob('*.xlsx'))\r\napp = xw.App(visible=False, add_book=False)\r\nsheet_name = '\u4ea7\u54c1\u9500\u552e\u7edf\u8ba1'\r\nheader = None\r\nall_data = &#91;]\r\nfor i in file_list:\r\n    if i.name.startswith('~$'):\r\n        continue\r\n    workbook = app.books.open(i)\r\n    for j in workbook.sheets:\r\n        if j.name == sheet_name:\r\n            if header is None:\r\n                header = j&#91;'A1:I1'].value\r\n            data = j&#91;'A2'].expand('table').value\r\n            all_data = all_data + data\r\n    workbook.close()\r\nnew_workbook = xw.Book()\r\nnew_worksheet = new_workbook.sheets.add(sheet_name)\r\nnew_worksheet&#91;'A1'].value = header\r\nnew_worksheet&#91;'A2'].value = all_data\r\nnew_worksheet.autofit()\r\nnew_workbook.save(src_folder \/ '\u4e0a\u534a\u5e74\u4ea7\u54c1\u9500\u552e\u7edf\u8ba1\u8868.xlsx')\r\nnew_workbook.close()\r\napp.quit()\r\n<\/code><\/pre>\n\n\n\n<p>\u5c06\u4e00\u4e2a\u5de5\u4f5c\u8868\u62c6\u5206\u4e3a\u591a\u4e2a\u5de5\u4f5c\u7c3f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pathlib import Path\r\nimport xlwings as xw\r\nsrc_file = Path('F:\\\\\u4ee3\u7801\u6587\u4ef6\\\\\u7b2c6\u7ae0\\\\\u4ea7\u54c1\u7edf\u8ba1\u8868.xlsx')\r\ndes_folder = Path('F:\\\\\u4ee3\u7801\u6587\u4ef6\\\\\u7b2c6\u7ae0\\\\\u62c6\u5206\u540e\u7684\u4ea7\u54c1\u7edf\u8ba1\u8868\\\\')\r\nif not des_folder.exists():\r\n    des_folder.mkdir(parents=True)\r\napp = xw.App(visible=False, add_book=False)\r\nworkbook = app.books.open(src_file)\r\nworksheet = workbook.sheets&#91;'\u7edf\u8ba1\u8868']\r\nheader = worksheet&#91;'A1:H1'].value\r\ndata1 = worksheet.range('A2').expand('table').value\r\ndata2 = dict()\r\nfor i in range(len(data1)):\r\n    product_name = data1&#91;i]&#91;1]\r\n    if product_name not in data2:\r\n        data2&#91;product_name] = &#91;]\r\n    data2&#91;product_name].append(data1&#91;i])\r\nfor k, v in data2.items():\r\n    new_workbook = xw.books.add()\r\n    new_worksheet = new_workbook.sheets.add(k)\r\n    new_worksheet&#91;'A1'].value = header\r\n    new_worksheet&#91;'A2'].value = v\r\n    new_worksheet.autofit()\r\n    new_workbook.save(des_folder \/ f'{k}.xlsx')\r\n    new_workbook.close()\r\napp.quit()<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6279\u91cf\u62c6\u5206\u5217\u6570\u636e<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>from pathlib import Path\r\nimport xlwings as xw\r\nimport pandas as pd\r\nsrc_folder = Path('F:\\\\\u4ee3\u7801\u6587\u4ef6\\\\\u7b2c6\u7ae0\\\\\u6bcf\u6708\u8fdb\u8d27\u7edf\u8ba1\u8868\\\\')\r\nfile_list = list(src_folder.glob('*.xlsx'))\r\napp = xw.App(visible=False, add_book=False)\r\nfor i in file_list:\r\n    if i.name.startswith('~$'):\r\n        continue\r\n    workbook = app.books.open(i)\r\n    worksheet = workbook.sheets&#91;'Sheet1']\r\n    data = worksheet.range('A1').options(pd.DataFrame, header=1, index=False, expand='table').value\r\n    new_data = data&#91;'\u4ea7\u54c1\u5c3a\u5bf8\uff08mm\uff09'].str.split('*', expand=True)\r\n    new_data.columns = &#91;'\u957f\uff08mm\uff09', '\u5bbd\uff08mm\uff09', '\u9ad8\uff08mm\uff09']\r\n    for j in range(new_data.shape&#91;1] - 1):\r\n        worksheet&#91;'F:F'].insert(shift='right', copy_origin='format_from_left_or_above')\r\n    worksheet&#91;'F1'].options(index=False).value = new_data\r\n    worksheet.autofit()\r\n    workbook.save()\r\n    workbook.close()\r\napp.quit()<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\u6279\u91cf\u5206\u7c7b\u6c47\u603b\u6570\u636e<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>import xlwings as xw\r\nimport pandas as pd\r\napp = xw.App(visible=False, add_book=False)\r\nworkbook = app.books.open('F:\\\\\u4ee3\u7801\u6587\u4ef6\\\\\u7b2c6\u7ae0\\\\\u4ea7\u54c1\u9500\u552e\u7edf\u8ba1\u8868.xlsx')\r\nworksheets = workbook.sheets\r\ntable = pd.DataFrame()\r\nfor i, j in enumerate(worksheets):\r\n    data = j.range('A1').options(pd.DataFrame, header=1, index=False, expand='table').value\r\n    data = data.reindex(columns=&#91;'\u5355\u53f7', '\u9500\u552e\u65e5\u671f', '\u4ea7\u54c1\u540d\u79f0', '\u6210\u672c\u4ef7\uff08\u5143\/\u4e2a\uff09', '\u9500\u552e\u4ef7\uff08\u5143\/\u4e2a\uff09', '\u9500\u552e\u6570\u91cf\uff08\u4e2a\uff09', '\u4ea7\u54c1\u6210\u672c\uff08\u5143\uff09', '\u9500\u552e\u6536\u5165\uff08\u5143\uff09', '\u9500\u552e\u5229\u6da6\uff08\u5143\uff09'])\r\n    table = table.append(data, ignore_index=True)\r\ntable = table.groupby('\u4ea7\u54c1\u540d\u79f0')\r\nnew_workbook = xw.books.add()\r\nfor idx, group in table:\r\n    new_worksheet = new_workbook.sheets.add(idx)\r\n    new_worksheet&#91;'A1'].options(index=False).value = group\r\n    last_cell = new_worksheet&#91;'A1'].expand('table').last_cell\r\n    last_row = last_cell.row\r\n    last_column = last_cell.column\r\n    last_column_letter = chr(64 + last_column)\r\n    sum_cell_name = f'{last_column_letter}{last_row + 1}'\r\n    sum_last_row_name = f'{last_column_letter}{last_row}'\r\n    formula = f'=SUM({last_column_letter}2:{sum_last_row_name})'\r\n    new_worksheet&#91;sum_cell_name].formula = formula\r\n    new_worksheet.autofit()\r\nnew_workbook.save('F:\\\\\u4ee3\u7801\u6587\u4ef6\\\\\u7b2c6\u7ae0\\\\\u4ea7\u54c1\u9500\u552e\u7edf\u8ba1\u8868.xlsx')\r\napp.quit()<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>import xlwings as xw\r\nimport pandas as pd\r\nfrom datetime import datetime\r\napp=xw.App(visible=True,add_book=False)\r\nwb=app.books.open('D:\\Excel\\8.2.1\u8282\\\u8d85\u5e02\u9500\u552e\u6570\u636e2020-9.xlsx')\r\nsht=wb.sheets('\u9500\u552e\u6570\u636e')\r\nsht.range('E:E').api.NumberFormat='H'\r\ndata_pd=sht.range('A1').options(pd.DataFrame,header=1,index=False,expand='table').value  \r\n\r\n#print(data_pd&#91;'\u9500\u552e\u65e5\u671f'])\r\n#data_pd1=data_pd&#91;data_pd&#91;'\u9500\u552e\u65e5\u671f']==datetime(2020,9,2)]\r\ndata_pd1=data_pd\r\ndata_pd2=data_pd1&#91;&#91;'\u9500\u552e\u65f6\u95f4','\u5c0f\u7968\u53f7']].drop_duplicates()\r\nprint(data_pd2&#91;'\u9500\u552e\u65f6\u95f4'])\r\ndata_pd2&#91;'\u9500\u552e\u65f6\u95f4']=&#91;int(x*24) for x in data_pd2&#91;'\u9500\u552e\u65f6\u95f4']]\r\nprint(data_pd2)\r\ndata_sort=data_pd2.groupby('\u9500\u552e\u65f6\u95f4').aggregate({'\u5c0f\u7968\u53f7':'count'})\r\n\r\nnew_wb=app.books.add()\r\nnew_sht=new_wb.sheets.add('\u5ba2\u6d41\u5206\u6790')\r\nnew_sht.range('A1').options(transform= True).value=data_sort\r\nnew_sht.autofit()\r\nnew_wb.save('D:\\Excel\\8.2.1\u8282\\\u5ba2\u6d41\u5206\u6790-\u65e5.xlsx')\r\nnew_wb.close()\r\nwb.close()\r\napp.quit()<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>XML \u8bfb\u53d6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import os #\u76ee\u6807\u68c0\u6d4b\u4e2d\u5c06\u5df2\u6709\u7684.XML\u6570\u636e\u96c6\u8f6c\u6362\u6210.TXT\u6570\u636e\u96c6\r\nimport xml.etree.ElementTree as ET\r\nfrom PIL import Image\r\nimport numpy as np\r\n#PYTHON\u5c06VOC\u6570\u636e\u96c6\u5f52\u4e00\u5316\u540e\u7684LABELS\uff08.TXT\uff09\u6587\u4ef6\u6279\u91cf\u8f6c\u6210XML\u6587\u4ef6\r\nimg_path = '\/home\/anngic\/BDD100K\/JPEGImages\/'                   #\u539f\u56fe.jpg\u6587\u4ef6\u7684\u8def\u5f84\r\nlabels_path = '\/home\/anngic\/BDD100K\/labels\/'                    #labels\u4e2d.txt\u6587\u4ef6\u7684\u8def\u5f84\r\nannotations_path = '\/home\/anngic\/BDD100K\/Annotations\/'          #\u751f\u6210\u7684xml\u6587\u4ef6\u9700\u8981\u4fdd\u5b58\u7684\u8def\u5f84\r\nlabels = os.listdir(labels_path)\r\nclsnames_path = '\/home\/anngic\/label\/bdd100k_labels\/BD100K_10.names'     #names\u6587\u4ef6\u7684\u8def\u5f84   \r\nwith open(clsnames_path,'r') as f:\r\n    classes = f.readlines()\r\n    classes = &#91;cls.strip('\\n') for cls in classes]\r\ndef write_xml(imgname,filepath,labeldicts):                     #\u53c2\u6570imagename\u662f\u56fe\u7247\u540d\uff08\u65e0\u540e\u7f00\uff09\r\n    root = ET.Element('Annotation')                             #\u521b\u5efaAnnotation\u6839\u8282\u70b9\r\n    ET.SubElement(root, 'filename').text = str(imgname)         #\u521b\u5efafilename\u5b50\u8282\u70b9\uff08\u65e0\u540e\u7f00\uff09\r\n    sizes = ET.SubElement(root,'size')                          #\u521b\u5efasize\u5b50\u8282\u70b9            \r\n    ET.SubElement(sizes, 'width').text = '1280'                 #\u6ca1\u5e26\u8111\u5b50\u76f4\u63a5\u5199\u4e86\u539f\u56fe\u7247\u7684\u5c3a\u5bf8......\r\n    ET.SubElement(sizes, 'height').text = '720'\r\n    ET.SubElement(sizes, 'depth').text = '3'                    #\u56fe\u7247\u7684\u901a\u9053\u6570\uff1aimg.shape&#91;2]\r\n    for labeldict in labeldicts:\r\n        objects = ET.SubElement(root, 'object')                 #\u521b\u5efaobject\u5b50\u8282\u70b9\r\n        ET.SubElement(objects, 'name').text = labeldict&#91;'name']        #BDD100K_10.names\u6587\u4ef6\u4e2d  \r\n                                                                       #\u7684\u7c7b\u522b\u540d\r\n        ET.SubElement(objects, 'pose').text = 'Unspecified'\r\n        ET.SubElement(objects, 'truncated').text = '0'\r\n        ET.SubElement(objects, 'difficult').text = '0'\r\n        bndbox = ET.SubElement(objects,'bndbox')\r\n        ET.SubElement(bndbox, 'xmin').text = str(int(labeldict&#91;'xmin']))\r\n        ET.SubElement(bndbox, 'ymin').text = str(int(labeldict&#91;'ymin']))\r\n        ET.SubElement(bndbox, 'xmax').text = str(int(labeldict&#91;'xmax']))\r\n        ET.SubElement(bndbox, 'ymax').text = str(int(labeldict&#91;'ymax']))\r\n    tree = ET.ElementTree(root)\r\n    tree.write(filepath, encoding='utf-8')\r\n\r\n\r\nfor label in labels:                                           #\u6279\u91cf\u8bfb.txt\u6587\u4ef6\r\n    with open(labels_path + label, 'r') as f:\r\n        img_id = os.path.splitext(label)&#91;0]\r\n        contents = f.readlines()\r\n        labeldicts = &#91;]\r\n        for content in contents:\r\n            img = np.array(Image.open(img_path+label.strip('.txt') + '.jpg'))\r\n            sh,sw = img.shape&#91;0],img.shape&#91;1]                  #img.shape&#91;0]\u662f\u56fe\u7247\u7684\u9ad8\u5ea6720\r\n                                                               #img.shape&#91;1]\u662f\u56fe\u7247\u7684\u5bbd\u5ea6720\r\n            content = content.strip('\\n').split()\r\n            x=float(content&#91;1])*sw\r\n            y=float(content&#91;2])*sh\r\n            w=float(content&#91;3])*sw\r\n            h=float(content&#91;4])*sh\r\n            new_dict = {'name': classes&#91;int(content&#91;0])],\r\n                        'difficult': '0',\r\n                        'xmin': x+1-w\/2,                      #\u5750\u6807\u8f6c\u6362\u516c\u5f0f\u770b\u53e6\u4e00\u7bc7\u6587\u7ae0....\r\n                        'ymin': y+1-h\/2,\r\n                        'xmax': x+1+w\/2,\r\n                        'ymax': y+1+h\/2\r\n                        }\r\n            labeldicts.append(new_dict)\r\n        write_xml(img_id, annotations_path + label.strip('.txt') + '.xml', labeldicts)<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># xml\u89e3\u6790\u5305  \u76ee\u6807\u68c0\u6d4b\u4e2d\u5c06\u5df2\u6709\u7684.XML\u6570\u636e\u96c6\u8f6c\u6362\u6210.TXT\u6570\u636e\u96c6\r\nimport xml.etree.ElementTree as ET\r\nimport pickle\r\nimport os\r\n# os.listdir() \u65b9\u6cd5\u7528\u4e8e\u8fd4\u56de\u6307\u5b9a\u7684\u6587\u4ef6\u5939\u5305\u542b\u7684\u6587\u4ef6\u6216\u6587\u4ef6\u5939\u7684\u540d\u5b57\u7684\u5217\u8868\r\nfrom os import listdir, getcwd\r\nfrom os.path import join\r\n\r\n\r\nsets = &#91;'train', 'test', 'val']\r\nclasses = &#91;'metal', 'plastic', 'guard']\r\n\r\n\r\n# \u8fdb\u884c\u5f52\u4e00\u5316\u64cd\u4f5c\r\ndef convert(size, box): # size:(\u539f\u56few,\u539f\u56feh) , box:(xmin,xmax,ymin,ymax)\r\n    dw = 1.\/size&#91;0]     # 1\/w\r\n    dh = 1.\/size&#91;1]     # 1\/h\r\n    x = (box&#91;0] + box&#91;1])\/2.0   # \u7269\u4f53\u5728\u56fe\u4e2d\u7684\u4e2d\u5fc3\u70b9x\u5750\u6807\r\n    y = (box&#91;2] + box&#91;3])\/2.0   # \u7269\u4f53\u5728\u56fe\u4e2d\u7684\u4e2d\u5fc3\u70b9y\u5750\u6807\r\n    w = box&#91;1] - box&#91;0]         # \u7269\u4f53\u5b9e\u9645\u50cf\u7d20\u5bbd\u5ea6\r\n    h = box&#91;3] - box&#91;2]         # \u7269\u4f53\u5b9e\u9645\u50cf\u7d20\u9ad8\u5ea6\r\n    x = x*dw    # \u7269\u4f53\u4e2d\u5fc3\u70b9x\u7684\u5750\u6807\u6bd4(\u76f8\u5f53\u4e8e x\/\u539f\u56few)\r\n    w = w*dw    # \u7269\u4f53\u5bbd\u5ea6\u7684\u5bbd\u5ea6\u6bd4(\u76f8\u5f53\u4e8e w\/\u539f\u56few)\r\n    y = y*dh    # \u7269\u4f53\u4e2d\u5fc3\u70b9y\u7684\u5750\u6807\u6bd4(\u76f8\u5f53\u4e8e y\/\u539f\u56feh)\r\n    h = h*dh    # \u7269\u4f53\u5bbd\u5ea6\u7684\u5bbd\u5ea6\u6bd4(\u76f8\u5f53\u4e8e h\/\u539f\u56feh)\r\n    return (x, y, w, h)    # \u8fd4\u56de \u76f8\u5bf9\u4e8e\u539f\u56fe\u7684\u7269\u4f53\u4e2d\u5fc3\u70b9\u7684x\u5750\u6807\u6bd4,y\u5750\u6807\u6bd4,\u5bbd\u5ea6\u6bd4,\u9ad8\u5ea6\u6bd4,\u53d6\u503c\u8303\u56f4&#91;0-1]\r\n\r\n\r\n# year ='2012', \u5bf9\u5e94\u56fe\u7247\u7684id\uff08\u6587\u4ef6\u540d\uff09\r\ndef convert_annotation(image_id):\r\n    '''\r\n    \u5c06\u5bf9\u5e94\u6587\u4ef6\u540d\u7684xml\u6587\u4ef6\u8f6c\u5316\u4e3alabel\u6587\u4ef6\uff0cxml\u6587\u4ef6\u5305\u542b\u4e86\u5bf9\u5e94\u7684bunding\u6846\u4ee5\u53ca\u56fe\u7247\u957f\u6b3e\u5927\u5c0f\u7b49\u4fe1\u606f\uff0c\r\n    \u901a\u8fc7\u5bf9\u5176\u89e3\u6790\uff0c\u7136\u540e\u8fdb\u884c\u5f52\u4e00\u5316\u6700\u7ec8\u8bfb\u5230label\u6587\u4ef6\u4e2d\u53bb\uff0c\u4e5f\u5c31\u662f\u8bf4\r\n    \u4e00\u5f20\u56fe\u7247\u6587\u4ef6\u5bf9\u5e94\u4e00\u4e2axml\u6587\u4ef6\uff0c\u7136\u540e\u901a\u8fc7\u89e3\u6790\u548c\u5f52\u4e00\u5316\uff0c\u80fd\u591f\u5c06\u5bf9\u5e94\u7684\u4fe1\u606f\u4fdd\u5b58\u5230\u552f\u4e00\u4e00\u4e2alabel\u6587\u4ef6\u4e2d\u53bb\r\n    labal\u6587\u4ef6\u4e2d\u7684\u683c\u5f0f\uff1acalss x y w h\u3000\u3000\u540c\u65f6\uff0c\u4e00\u5f20\u56fe\u7247\u5bf9\u5e94\u7684\u7c7b\u522b\u6709\u591a\u4e2a\uff0c\u6240\u4ee5\u5bf9\u5e94\u7684\uff42\uff55\uff4e\uff44\uff49\uff4e\uff47\u7684\u4fe1\u606f\u4e5f\u6709\u591a\u4e2a\r\n    '''\r\n    # \u5bf9\u5e94\u7684\u901a\u8fc7year \u627e\u5230\u76f8\u5e94\u7684\u6587\u4ef6\u5939\uff0c\u5e76\u4e14\u6253\u5f00\u76f8\u5e94image_id\u7684xml\u6587\u4ef6\uff0c\u5176\u5bf9\u5e94bund\u6587\u4ef6\r\n    in_file = open('data\/Annotations\/%s.xml' % (image_id), encoding='utf-8')\r\n    # print(in_file.name)\r\n    # \u51c6\u5907\u5728\u5bf9\u5e94\u7684image_id \u4e2d\u5199\u5165\u5bf9\u5e94\u7684label\uff0c\u5206\u522b\u4e3a\r\n    # &lt;object-class> &lt;x> &lt;y> &lt;width> &lt;height>\r\n    out_file = open('data\/labels\/%s.txt' % (image_id), 'w', encoding='utf-8')\r\n    # print(out_file.name)\r\n    # \u89e3\u6790xml\u6587\u4ef6\r\n    tree = ET.parse(in_file)\r\n    # \u83b7\u5f97\u5bf9\u5e94\u7684\u952e\u503c\u5bf9\r\n    root = tree.getroot()\r\n    # \u83b7\u5f97\u56fe\u7247\u7684\u5c3a\u5bf8\u5927\u5c0f\r\n    size = root.find('size')\r\n    # \u83b7\u5f97\u5bbd\r\n    w = int(size.find('width').text)\r\n    # \u83b7\u5f97\u9ad8\r\n    h = int(size.find('height').text)\r\n    # \u904d\u5386\u76ee\u6807obj\r\n    for obj in root.iter('object'):\r\n        # \u83b7\u5f97difficult \uff1f\uff1f\r\n        difficult = obj.find('difficult').text\r\n        # \u83b7\u5f97\u7c7b\u522b =string \u7c7b\u578b\r\n        cls = obj.find('name').text\r\n        # \u5982\u679c\u7c7b\u522b\u4e0d\u662f\u5bf9\u5e94\u5728\u6211\u4eec\u9884\u5b9a\u597d\u7684class\u6587\u4ef6\u4e2d\uff0c\u6216difficult==1\u5219\u8df3\u8fc7\r\n        if cls not in classes or int(difficult) == 1:\r\n            continue\r\n        # \u901a\u8fc7\u7c7b\u522b\u540d\u79f0\u627e\u5230id\r\n        cls_id = classes.index(cls)\r\n        # \u627e\u5230bndbox \u5bf9\u8c61\r\n        xmlbox = obj.find('bndbox')\r\n        # \u83b7\u53d6\u5bf9\u5e94\u7684bndbox\u7684\u6570\u7ec4 = &#91;'xmin','xmax','ymin','ymax']\r\n        b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),\r\n             float(xmlbox.find('ymax').text))\r\n        print(image_id, cls, b)\r\n        # \u5e26\u5165\u8fdb\u884c\u5f52\u4e00\u5316\u64cd\u4f5c\r\n        # w = \u5bbd, h = \u9ad8\uff0c b= bndbox\u7684\u6570\u7ec4 = &#91;'xmin','xmax','ymin','ymax']\r\n        bb = convert((w, h), b)\r\n        # bb \u5bf9\u5e94\u7684\u662f\u5f52\u4e00\u5316\u540e\u7684(x,y,w,h)\r\n        # \u751f\u6210 calss x y w h \u5728label\u6587\u4ef6\u4e2d\r\n        out_file.write(str(cls_id) + \" \" + \" \".join(&#91;str(a) for a in bb]) + '\\n')\r\n\r\n\r\n# \u8fd4\u56de\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\r\nwd = getcwd()\r\nprint(wd)\r\n\r\n\r\nfor image_set in sets:\r\n    '''\r\n    \u5bf9\u6240\u6709\u7684\u6587\u4ef6\u6570\u636e\u96c6\u8fdb\u884c\u904d\u5386\r\n    \u505a\u4e86\u4e24\u4e2a\u5de5\u4f5c\uff1a\r\n\u3000\u3000\u3000\u3000\uff11\uff0e\u8bb2\u6240\u6709\u56fe\u7247\u6587\u4ef6\u90fd\u904d\u5386\u4e00\u904d\uff0c\u5e76\u4e14\u5c06\u5176\u6240\u6709\u7684\u5168\u8def\u5f84\u90fd\u5199\u5728\u5bf9\u5e94\u7684txt\u6587\u4ef6\u4e2d\u53bb\uff0c\u65b9\u4fbf\u5b9a\u4f4d\r\n\u3000\u3000\u3000\u3000\uff12\uff0e\u540c\u65f6\u5bf9\u6240\u6709\u7684\u56fe\u7247\u6587\u4ef6\u8fdb\u884c\u89e3\u6790\u548c\u8f6c\u5316\uff0c\u5c06\u5176\u5bf9\u5e94\u7684bundingbox \u4ee5\u53ca\u7c7b\u522b\u7684\u4fe1\u606f\u5168\u90e8\u89e3\u6790\u5199\u5230label \u6587\u4ef6\u4e2d\u53bb\r\n    \u3000\u3000\u3000\u3000\u3000\u6700\u540e\u518d\u901a\u8fc7\u76f4\u63a5\u8bfb\u53d6\u6587\u4ef6\uff0c\u5c31\u80fd\u627e\u5230\u5bf9\u5e94\u7684label \u4fe1\u606f\r\n    '''\r\n    # \u5148\u627elabels\u6587\u4ef6\u5939\u5982\u679c\u4e0d\u5b58\u5728\u5219\u521b\u5efa\r\n    if not os.path.exists('data\/labels\/'):\r\n        os.makedirs('data\/labels\/')\r\n    # \u8bfb\u53d6\u5728ImageSets\/Main \u4e2d\u7684train\u3001test..\u7b49\u6587\u4ef6\u7684\u5185\u5bb9\r\n    # \u5305\u542b\u5bf9\u5e94\u7684\u6587\u4ef6\u540d\u79f0\r\n    image_ids = open('data\/ImageSets\/%s.txt' % (image_set)).read().strip().split()\r\n    # \u6253\u5f00\u5bf9\u5e94\u76842012_train.txt \u6587\u4ef6\u5bf9\u5176\u8fdb\u884c\u5199\u5165\u51c6\u5907\r\n    list_file = open('data\/%s.txt' % (image_set), 'w')\r\n    # \u5c06\u5bf9\u5e94\u7684\u6587\u4ef6_id\u4ee5\u53ca\u5168\u8def\u5f84\u5199\u8fdb\u53bb\u5e76\u6362\u884c\r\n    for image_id in image_ids:\r\n        list_file.write('data\/images\/%s.jpg\\n' % (image_id))\r\n        # \u8c03\u7528  year = \u5e74\u4efd  image_id = \u5bf9\u5e94\u7684\u6587\u4ef6\u540d_id\r\n        convert_annotation(image_id)\r\n    # \u5173\u95ed\u6587\u4ef6\r\n    list_file.close()<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from openpyxl import load_workbook\r\nworkbook = load_workbook('D:\\\\python\\\\app_excel\\\\use python6\\\\\u51fa\u8d27\u7edf\u8ba1\u8868.xlsx')\r\nworksheet = workbook&#91;'Sheet1']\r\ndata = {}\r\nfor row in range(2, worksheet.max_row + 1):\r\n    date = worksheet&#91;'B' + str(row)].value.date()\r\n    customer = worksheet&#91;'C' + str(row)].value\r\n    product = worksheet&#91;'D' + str(row)].value\r\n    number = worksheet&#91;'E' + str(row)].value\r\n    model = worksheet&#91;'G' + str(row)].value\r\n    info_list = &#91;customer, product, number, model]\r\n    data.setdefault(date, &#91;])\r\n    data&#91;date].append(info_list)\r\nfor key, value in data.items():\r\n    print(key, value)\r\nworkbook_day = load_workbook('D:\\\\python\\\\app_excel\\\\use python6\\\\\u51fa\u8d27\u6e05\u5355\u6a21\u677f.xlsx')\r\nworksheet_day = workbook_day&#91;'\u51fa\u8d27\u6e05\u5355\u6a21\u677f']\r\nfor date in data.keys():\r\n    worksheet_new = workbook_day.copy_worksheet(worksheet_day)\r\n    worksheet_new.title = str(date)&#91;-5:]\r\n    worksheet_new.cell(row=2, column=5).value = date\r\n    i = 4\r\n    for product in data&#91;date]:\r\n        worksheet_new.cell(row=i, column=2).value = product&#91;0]\r\n        worksheet_new.cell(row=i, column=3).value = product&#91;1]\r\n        worksheet_new.cell(row=i, column=4).value = product&#91;2]\r\n        worksheet_new.cell(row=i, column=5).value = product&#91;3]\r\n        i += 1\r\nworkbook_day.save('D:\\\\python\\\\app_excel\\\\use python6\\\\33\u4ea7\u54c1\u51fa\u8d27\u6e05\u5355.xlsx')\r\n\n2020-02-08 &#91;&#91;'\u521b\u666e\u7535\u5668\u5e97', '\u51b0\u7bb1', 120, 'BCD-121W'], \r\n2020-02-15 &#91;&#91;'\u6e5b\u7f8e\u7535\u5668\u5e97', '\u5fae\u6ce2\u7089', 50, 'M1-230E']]\r\n2020-02-18 &#91;&#91;'\u58a8\u68ee\u7535\u5668\u5e97', '\u51b0\u7bb1', 200, 'BCD-120A']]\r\n2020-02-24 &#91;&#91;'\u7f8e\u597d\u751f\u6d3b\u7535\u5668\u5e97', '\u7535\u996d\u7172', 360, 'GF-LP100YC'], &#91;'\u751f\u6d3b\u65e5\u8bb0\u7535\u5668\u5e97', '\u7535\u5439\u98ce', 400, 'AH7600I']]\r\n2020-02-28 &#91;&#91;'\u798f\u6ee1\u7535\u5668\u5e97', '\u6d17\u8863\u673a', 500, 'XQG80-HBD1426']]\r\n2020-03-01 &#91;&#91;'\u5cf0\u6d01\u7535\u5668\u5e97', '\u5fae\u6ce2\u7089', 80, 'M3-208E'], &#91;'\u65b0\u957f\u5f18\u7535\u5668\u5e97', '\u51b0\u7bb1', 60, 'BCD-182']]\r\n2020-03-05 &#91;&#91;'\u534e\u6c5f\u7535\u5668\u5e97', '\u6d17\u8863\u673a', 90, 'XQG80-HBD1426']]\r\n2020-03-14 &#91;&#91;'\u5343\u90a6\u7535\u5668\u5e97', '\u7535\u5439\u98ce', 40, 'AH7600I']]\r\n2020-03-18 &#91;&#91;'\u79d1\u5b8f\u7535\u5668\u5e97', '\u5fae\u6ce2\u7089', 20, 'M1-230E']] <\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u5355\u7684\u8bfb\u53d6excel \u6570\u636e \u5c06\u591a\u4e2a\u5de5\u4f5c\u8868\u5408\u5e76\u4e3a\u4e00\u4e2a\u5de5\u4f5c\u8868 \u5c06\u4e00\u4e2a\u5de5\u4f5c\u8868\u62c6\u5206\u4e3a\u591a\u4e2a\u5de5\u4f5c\u7c3f XML \u8bfb\u53d6<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"views":850,"_links":{"self":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts\/1113"}],"collection":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/comments?post=1113"}],"version-history":[{"count":7,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts\/1113\/revisions"}],"predecessor-version":[{"id":1121,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/posts\/1113\/revisions\/1121"}],"wp:attachment":[{"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/media?parent=1113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/categories?post=1113"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/viplao.com\/index.php\/wp-json\/wp\/v2\/tags?post=1113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}