1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import requests import json from docx import Document # 從URL取得JSON資料 r = requests.get('https://data.moa.gov.tw/Service/OpenData/FromM/AquaticTransData.aspx') json_data = json.loads(r.text) # 建立一個新的Word文件 doc = Document() doc.add_heading('漁產品交易行情', level=1) # 寫入標題行 headers = ['交易日期', '品種代碼', '魚貨名稱', '市場名稱', '上價', '中價', '下價', '交易量', '平均價'] table = doc.add_table(rows=1, cols=len(headers)) hdr_cells = table.rows[0].cells for idx, header in enumerate(headers): hdr_cells[idx].text = header # 寫入資料 for item in json_data: row = [ item.get('交易日期'), item.get('品種代碼'), item.get('魚貨名稱'), item.get('市場名稱'), str(item.get('上價')), str(item.get('中價')), str(item.get('下價')), str(item.get('交易量')), str(item.get('平均價')) ] row_cells = table.add_row().cells for idx, cell_value in enumerate(row): row_cells[idx].text = str(cell_value) # 儲存到Word檔案 doc.save('AquaticTransData.docx') print("資料已儲存到 AquaticTransData.docx") |
執行結果:
資料已儲存到 AquaticTransData.docx
開啟AquaticTransData.docx的畫面如下:
範例二、加上格線
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import requests import json from docx import Document from docx.oxml import OxmlElement from docx.oxml.ns import qn # 從URL取得JSON資料 r = requests.get('https://data.moa.gov.tw/Service/OpenData/FromM/AquaticTransData.aspx') json_data = json.loads(r.text) # 建立一個新的Word文件 doc = Document() doc.add_heading('漁產品交易行情', level=1) # 寫入標題行 headers = ['交易日期', '品種代碼', '魚貨名稱', '市場名稱', '上價', '中價', '下價', '交易量', '平均價'] table = doc.add_table(rows=1, cols=len(headers)) hdr_cells = table.rows[0].cells for idx, header in enumerate(headers): hdr_cells[idx].text = header # 寫入資料 for item in json_data: row = [ item.get('交易日期'), item.get('品種代碼'), item.get('魚貨名稱'), item.get('市場名稱'), str(item.get('上價')), str(item.get('中價')), str(item.get('下價')), str(item.get('交易量')), str(item.get('平均價')) ] row_cells = table.add_row().cells for idx, cell_value in enumerate(row): row_cells[idx].text = str(cell_value) # 設置表格邊框 def set_table_border(table): tbl = table._element tbl_pr = tbl.tblPr tbl_borders = OxmlElement('w:tblBorders') for border_name in ['top', 'left', 'bottom', 'right', 'insideH', 'insideV']: border = OxmlElement(f'w:{border_name}') border.set(qn('w:val'), 'single') border.set(qn('w:sz'), '4') border.set(qn('w:space'), '0') border.set(qn('w:color'), 'auto') tbl_borders.append(border) tbl_pr.append(tbl_borders) # 加上格線 set_table_border(table) # 儲存到Word檔案 doc.save('AquaticTransData.docx') print("資料已儲存到 AquaticTransData.docx") |
執行結果:
資料已儲存到 AquaticTransData.docx
開啟AquaticTransData.docx的畫面如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import requests import json from docx import Document from docx.oxml import OxmlElement from docx.oxml.ns import qn from docx2pdf import convert # 從URL取得JSON資料 r = requests.get('https://data.moa.gov.tw/Service/OpenData/FromM/AquaticTransData.aspx') json_data = json.loads(r.text) # 建立一個新的Word文件 doc = Document() doc.add_heading('漁產品交易行情', level=1) # 寫入標題行 headers = ['交易日期', '品種代碼', '魚貨名稱', '市場名稱', '上價', '中價', '下價', '交易量', '平均價'] table = doc.add_table(rows=1, cols=len(headers)) hdr_cells = table.rows[0].cells for idx, header in enumerate(headers): hdr_cells[idx].text = header # 寫入資料 for item in json_data: row = [ item.get('交易日期'), item.get('品種代碼'), item.get('魚貨名稱'), item.get('市場名稱'), str(item.get('上價')), str(item.get('中價')), str(item.get('下價')), str(item.get('交易量')), str(item.get('平均價')) ] row_cells = table.add_row().cells for idx, cell_value in enumerate(row): row_cells[idx].text = str(cell_value) # 設置表格邊框 def set_table_border(table): tbl = table._element tbl_pr = tbl.tblPr tbl_borders = OxmlElement('w:tblBorders') for border_name in ['top', 'left', 'bottom', 'right', 'insideH', 'insideV']: border = OxmlElement(f'w:{border_name}') border.set(qn('w:val'), 'single') border.set(qn('w:sz'), '4') border.set(qn('w:space'), '0') border.set(qn('w:color'), 'auto') tbl_borders.append(border) tbl_pr.append(tbl_borders) # 加上格線 set_table_border(table) # 儲存到Word檔案 word_filename = 'AquaticTransData.docx' pdf_filename = 'AquaticTransData.pdf' doc.save(word_filename) # 轉換為PDF convert(word_filename, pdf_filename) print(f"資料已儲存到 {pdf_filename}") |
執行結果:
0%| | 0/1 [00:00<?, ?it/s]
100%|██████████| 1/1 [00:45<00:00, 45.97s/it]
100%|██████████| 1/1 [00:46<00:00, 46.15s/it]
資料已儲存到 AquaticTransData.pdf
開啟AquaticTransData.pdf的畫面如下:
沒有留言:
張貼留言