pymysql獲取excel資料批量寫入資料庫

2021-10-22 09:47:19 字數 2170 閱讀 9143

由於系統需要獲取到的文件的格式是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 ...