2017-08-21 8 views
0

私は特定のスクリプトに苦しんだ、私は問題をグーグルで試してみたが、私は立ち往生になった...パイソン、Excel、およびSQLlite3

SQL式。私はこれをReddits r/pythonにも投稿しました。そこにある答えはここに投稿してください。

現在のスクリプトはここにある:現時点ではhttps://gist.github.com/adamrees89/b73a60bc01170601ced7adc7a8e971f7

、スクリプトは、サンプルファイルをエクセル読み込み、各シート上のすべてのセルの値と書式設定を読み込み、値を記録し、SQLlite3ファイルに書式。

現在のところ、スクリプトはすべての値と書式設定を読み込み、問題なく各シートのSQL内にテーブルを作成します(SQLiteではDBブラウザでこれを確認しています)が、テーブル内にデータ行はありません。

私は私の「templateCell()」関数に問題があると思う:

def templateCell(s,sn,c,r): 
#__init__ will gather the cell format data 
cellRef = c + r 
val = s[cellRef].value 
fname = s[cellRef].font.name 
fsize = s[cellRef].font.size 
fbold = int(s[cellRef].font.bold == 'true') 
fital = int(s[cellRef].font.italic == 'true') 
ccolour = s[cellRef].fill.start_color.index 
print("Cell Reference is: {},".format(cellRef)) 
c.execute("INSERT INTO {tn} VALUES ({a},{b},{c},{d},{e},{f})".format(tn=sn,a=cellRef,b=val,c=fname,d=fbold,e=fital,f=ccolour)) 

以上、ためにデータベースに行を作成することになっているライン11、上特にc.execute機能各セル。変数は次のとおりです。

s = sheet 
sn = sheetname (function of sheet) 
c = column 
r = row 

編集1:testExcel.xlsx

答えて

0

質問:Excelファイルはここにあります...しかし、テーブル内のデータの行がありません。

あなたはシートをした後は、おそらくc.commit()が欠落しています。

executemany(sql, seq_of_parameters)function.¶`をチェック


class sqlite3.Connection

commit()
このメソッドは、現在のトランザクションをコミットします。このメソッドを呼び出さないと、commit()の最後の呼び出し以降に行ったことは、他のデータベース接続からは見えません。
データベースに書き込んだデータが表示されない理由が不明な場合は、このメソッドを呼び出すことを忘れないでください。

関連する問題