Python,Excel和SQLlite3

时间:2017-08-21 12:53:27

标签: python excel sqlite

我正在努力学习某个特定的剧本,我试过谷歌搜索问题,但我已经陷入困境......

我想知道是否有人可以帮我解决SQL公式问题。我已经将此发布到Reddits r / python,并在那里发布任何答案,以供将来可能需要它的人使用!

当前脚本位于:https://gist.github.com/adamrees89/b73a60bc01170601ced7adc7a8e971f7

此时,脚本会读取一个示例excel文件,读取每个工作表上所有单元格的值和格式,并将值和格式记录到SQLlite3文件中。

目前,脚本读取所有值和格式正常,在SQL中为每个工作表创建一个没有问题的表(使用DB Browser for SQLite确认),但表中没有数据行。

我认为我的' 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:Excel文件可在此处获取:testExcel.xlsx

1 个答案:

答案 0 :(得分:1)

  

问题:...但表格中没有数据行。

完成一个工作表后,您可能错过了c.commit()

  

注意:查看executemany(sql, seq_of_parameters)功能.¶`

  

class sqlite3.Connection

     

commit()
      此方法提交当前事务。如果不调用此方法,则自上次调用commit()以来所执行的任何操作都不会从其他数据库连接中看到   如果您想知道为什么没有看到您写入数据库的数据,请检查您是否忘记调用此方法