如何从Excel文件中提取日期到SQLite3

时间:2018-03-07 13:18:20

标签: python excel sqlite

我试图将一些数据从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。 有什么建议如何解决这个问题?

1 个答案:

答案 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

的日期数据类型的提取