由於系統需要獲取到的文件的格式是xlsx,又發現xlrd在2.0.2不支援讀取xlsx的文件了,所以在用了openpyxl庫去讀取xlsx格式的excel安裝openpyxl
pip install openpyxl
from openpyxl import load_workbook
workbook = load_workbook(
'202102.xlsx'
)# 讀取所需資料表
detail_sheet = workbook[
'明細'
]detail_sheet_json =
for i in
range(2
, detail_sheet.max_row +1)
:# 把資料寫為乙個元祖或是陣列,使用pymysql進行批量插入
sub_data =
(detail_sheet.cell(i,2)
.value,
str(detail_sheet.cell(i,3)
.value)
, detail_sheet.cell(i,4)
.value,
detail_sheet.cell(i,5)
.value,
detail_sheet.cell(i,6)
.value,
detail_sheet.cell(i,7)
.value,
detail_sheet.cell(i,8)
.value,
detail_sheet.cell(i,9)
.value,
str(detail_sheet.cell(i,10)
.value)
,str
(detail_sheet.cell(i,11)
.value)
)print
('明細表的資料:'
, detail_sheet_json)
mysql資料庫,採用pymysql庫來運算元據庫, 使用executemany進行批量插入
# 鏈結mysql資料庫
import pymysql
from popy.env import env
employee_purchase = env.getcfg(
).config.employee_purchase_system
connection = pymysql.connect(employee_purchase[
'host'
], employee_purchase[
'user'
], employee_purchase[
'passwd'],
employee_purchase[
'db'])
# 執行msyql資料的更新
with connection.cursor(
)as cursor:
# 需要批量更新的sql
updatesql =
"""insert into nx_order_info(wechat_name, employee_id, employee_name, order_address, dept, order_number,
order_title, order_desc, order_count, order_price) values ((%s), (%s), (%s), (%s), (%s), (%s), (%s), (%s), (%s), (%s))"""
try:
# 採用執行傳參的方式可以避免sql注入
execute_result = cursor.executemany(updatesql, detail_sheet_json)
connection.commit(
)# print('result:', result)
print
('執行完成execute_result:'
, execute_result)
except exception as e:
print
("執行報錯資訊:"
, e)
Excel獲取數值
excel獲取數值篇 修復cell.getcelltype方法過時問題 使用最新的型別方式獲取 根據excel單元格型別返回相對應的值 根據excel單元格型別返回相對應的值 param cell return public static object getvaluebytype cell cel...
POI 獲取Excel列數和行數的方法
獲取指定行,索引從0開始 hssfrow hssfsheet.getrow 1 獲取指定列,索引從0開始 hssfcell hssfrow.getcell short 6 獲取總行數 int rownum hssfsheet.getlastrownum 獲取乙個excel 中的總記錄數 int ro...
POI 獲取Excel列數和行數的方法
獲取指定行,索引從0開始 hssfrow hssfsheet.getrow 1 獲取指定列,索引從0開始 hssfcell hssfrow.getcell short 6 獲取總行數 由於獲取行號從0開始,所以行數應為行號加1 int totalrownum sheet.getlastrownum ...