Python, Excel, and SQLlite3



我正在努力使用特定的脚本,我尝试在谷歌上搜索问题,但我被卡住了......

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

当前脚本在这里: https://gist.github.com/adamrees89/b73a60bc01170601ced7adc7a8e971f7

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

目前,该脚本可以很好地读取所有值和格式,在SQL中为每个工作表创建一个表,没有问题(使用SQLite的数据库浏览器确认了这一点(,但是表中没有数据行。

我认为我的"模板单元格(("函数有问题:

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

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

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

注意:查看executemany(sql, seq_of_parameters)函数。


类 sqlite3.连接

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

最新更新