Pythonのパンダは、Excelからデータを取得します

インポートxlrd 
xlrdインポートxldate_as_tupleから
日時インポート日時から
PDとしてインポートパンダ
SQLAlchemyのインポートcreate_engineのから


:DEF ordfun(zimu)
リターンORD(zimu)-65
DEF realnum(shuzi):
戻りshuzi-1

DEFのgetDate(シート、行、列) :
細胞= sheet.cell_value(realnum(行)、ordfun(カラム))
ヴァル=日時(* xldate_as_tuple(セル、0))のstrftime( '%Y /%のM /%のD')#「%Y /%のM。 /%D%H:%のM:%S」
戻りヴァル

DEF NVL(入力):
入力なしまたは入力==ない場合'':
0戻り
他:
戻りINT(エバール(STR(入力).replace( '=' 、 '')))

デフintoDB(DF、tableNameの):
= create_engine db_engine( '+ PostgreSQLのpsycopg2://' + 'gpadmin' + ':' + 'gpadmin' + '@' + STR('10 .39.4.175 ')+' / '+' pissh「)
pd.io. sql.to_sql(DF、tableNameの、db_engine、if_exists = 'APPEND'、インデックス=偽)

#データベース接続が得られる
DEF getEngine():
db_engine create_engine =( '+ PostgreSQLのpsycopg2://' + + 'gpadmin' '' + 'gpadmin' + '@' + STR('10 .39.4.175 ')+' / '+' pissh ')
db_engineリターン


WB = xlrd.open_workbook(' E://広東空調/ PISSH合計_20190730 / P1_2時間_CU1ライン(ハンドリング)2.xlsx「)
空のリストステートメントリスト
listAllの= []

すべてのシートを介して
レンジでのIのための(1,32):
シート= wb.sheet_by_name(STR(I))
checkcellvalue =シート。セル(realnum(28)、ordfun ( 'N '))値。
(シート名:R&LT%、チェック値:%のR「%(STR(#Print' I)、checkcellvalue))
checkcellvalueがNoneまたはcheckcellvalue == 'なければ':
続ける
試みた:
辞書= { 'cal_date'のgetDate(シート、5、 'C')
'PROJECT_NAME':sheet.cell(realnum(5)、ordfun( 'F' 。))値
、 'クラス':sheet.cell(realnum(5)、ordfun( 'H'))値
、 'plan_num':sheet.cell(realnum(28)、ordfun( 'N'))値
、 'real_num':sheet.cell(realnum(29)、ordfun( 'N'))値
、 'overtime_plan_num':NVL(sheet.cell(realnum(28)、ordfun( 'Q'))の値。)
'overtime_real_num':NVL(sheet.cell(realnum(29)、ordfun( 'Q'))の値。)}
を除く:
"从シート生成字典出错、错误地点为:%のR"%sheet.name

listAll.append(辞書)

DF = pd.DataFrame(listAllの)
= COLS [ 'cal_date'、 'クラス'、 'PROJECT_NAME'、 'plan_num'、 'real_num'、 'overtime_plan_num'、 'overtime_real_num']
DF = df.ixの[:、COLS]#順次データフレームの出力

取得#エンジン
= getEngineエンジン()

allDict = df.to_dict(オリエント= 'レコード')
allDictの行のために:
印刷(タプル(row.values()))
表= ' "PAPAGZ_KPI_COMPREHENSIVE_RATE_DATA"'
カンマ区切りで取得した#キーと文字列は、文字列返す
。(row.keys())参加' '=キー
値='、'参加([ '%のS'] * lenは(行))
SQL =「INSERT INTO表{} ({}キー)の値値{}「形式(表=表、キーキー=、=タプル値(row.values()))。
トライ:
pd.io.sql.execute(SQL、エンジン)
E AS例外を除い:
印刷( "例外がキャッチされ、EXP ="、E)

おすすめ

転載: www.cnblogs.com/zhangwensi/p/11290352.html
おすすめ