我试图将一些数据从Excel文件中提取到数据库中。 因此,我使用以下代码:
import os
import sqlite3
from win32com.client import Dispatch
#----------------------------------------
# get data from excel file
#----------------------------------------
XLS_FILE = os.getcwd() + "//test.xls"
ROW_SPAN = (16, 17)
COL_SPAN = (2, 7)
app = Dispatch("Excel.Application")
app.Visible = True
ws = app.Workbooks.Open(XLS_FILE).Sheets(1)
exceldata = [[ws.Cells(row, col).Value
for col in range(COL_SPAN[0], COL_SPAN[1])]
for row in range(ROW_SPAN[0], ROW_SPAN[1])]
#----------------------------------------
# create SQL table and fill it with data
#----------------------------------------
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute('''CREATE TABLE exceltable (xyz TEXT, xyz TEXT,
xyz INTEGER, xyz TEXT)''')
for row in exceldata:
c.execute('INSERT INTO exceltable VALUES (?,?,?,?)', row)
conn.commit()
这适用于提取正常数据类型(如Integer),但我无法像这样将数据类型提取到数据库中。日期在Excel文件中存储为DD.MM.YYYY。 有什么建议如何解决这个问题?
答案 0 :(得分:0)
对于那些对解决方案感兴趣的人,我使用此代码运行它:
for r in range(15, sheet.nrows):
Value1 = sheet.cell(r,1).value
if sheet.cell(r,15).value == "":
Value2 = "No Date included"
else:
a1 = sheet.cell(r,15).value
Value2 = datetime.datetime(*xlrd.xldate_as_tuple(a1,book.datemode))
因此,您需要导入xlrd和datetime,这样可以说明Excel文件的哪个值应该位于数据库的哪一列。 If子句描述了从Excel到SQlite3
的日期数据类型的提取