xlsxwrite、openpyxl、xlrd&xlwt、microsoft excel,其差異大致如下:
此次專案有個需求是前端頁面上傳乙份excel檔案,後端這邊將其內容讀取到,並存入資料庫中
大概有兩個點,接收上傳的檔案,讀取excel內容,存入資料庫中
2.1flask有個處理接收到的檔案的方法,request.files 方法,即可獲取到前端上傳過來的檔案,讀取excel使用的是xlsxwriter==1.1.0
pip install xlsxwrite 即可
具體的**實現如下
# 匯入excel資料
@blue_pro.route('/importexcel', methods=['post'])
def importexcel():
if request.files.has_key('file'):
file = request.files['file']
allow_file = '.' in file.filename and file.filename.rsplit('.', 1)[1] in ['xlsx']
if file and allow_file:
# 解析檔案內容
workbook = load_workbook(file)
sheet = workbook.active
max_row = sheet.max_row
# 驗證合同號是否重複
contid_list = db.session.query(projectunique.contractid).all()
clo_id_list =
for col in sheet.iter_cols(min_row=2, max_row=max_row, min_col=4, max_col=4):
for cell in col:
# 求交集,已存在的合同號
exist_list = list(set(clo_id_list).intersection(set(contid_list)))
if exist_list:
# 合同號存在,不處理
existids_list = map(lambda x: x[0], exist_list)
return resp_json(402, u'匯入失敗,合同號已存在', existids_list, none, 1)
else:
# 處理資料
for rows in range(max_row - 1):
row_info_list =
for row in list(sheet.rows)[1 + rows]:
del row_info_list[0]
# 日期處理
start_time = none
end_time = none
if row_info_list[3]:
try:
row_info_list[3] = str(row_info_list[3])
start_time = row_info_list[3].split('/')[0]
end_time = row_info_list[3].split('/')[1]
start_time = datetime.strptime(start_time, '%y-%m-%d').date()
end_time = datetime.strptime(end_time, '%y-%m-%d').date()
except:
return resp_json(402, u'日期時間不符', none, none, 1)
if row_info_list[5]:
try:
row_info_list[5] = row_info_list[5] * 10000
except:
return resp_json(402, u'預算金額不符', none, none, 1)
if row_info_list[6]:
try:
row_info_list[6] = row_info_list[6] * 10000
except:
return resp_json(402, u'採購金額不符', none, none, 1)
del row_info_list[3]
# 專案資訊表新增
pinfo_obj = projectinfo()
pinfo_obj.read_excel(row_info_list)
db.session.add(pinfo_obj)
try:
db.session.commit()
except:
db.session.rollback()
return resp_json(501, u'資訊處理失敗', none, none, 1)
# 2.專案唯一表
punique_obj = projectunique(contractid=row_info_list[2], proinfoid=pinfo_obj.id)
db.session.add(punique_obj)
try:
db.session.commit()
except:
db.session.rollback()
return resp_json(501, u'資訊新增失敗', none, none, 1)
return resp_json(200, u'資料處理成功,已入庫', none, none, 0)
else:
return resp_json(401, u'上傳失敗,檔名字尾不符', none, none, 1)
else:
return resp_json(400, u'上傳失敗', none, none, 1)
python讀取excel的內容
這次看到別人用別的語言抓取excel中的內容,自己也試了一下,昨晚確實遇到了不少問題,首先就是很糟糕,讓人很奔潰的編碼問題,這也是python中的乙個難點吧,目前有很多的編碼方式,gbk,utf 8,gb2322,在python中提到unicode,一般指的是unicode物件,例如 哈哈 的uni...
python 讀取excel內容並輸出
讀取excel內容並用print輸出。import pandas as pd df pd.read excel 測試.xlsx 這個會直接預設讀取到這個excel的第乙個表單 data df.head 預設讀取前5行的資料 print 獲取到所有的值 n format data 格式化輸出 方法二 ...
利用python讀取Excel檔案內容
今天,跟大家談一下用python計算excel中的資料 我們先學習讀取excel中的資料 首先我們要安裝xlrd庫,在命令提示符 快捷鍵win r 中輸入 pip install xlrd首先呢,當然要先有乙個excel啦,如下 我們先仔細觀察這個excel,裡面有2018 2017 2016的月收...