これは、エクセルのスプレッドシートからPythonを使用してアクセスデータベースにデータをインポートしようとしています。スクリプトを作成しましたが、日付フィールドに問題があります。日付を含むExcelスプレッドシートに2つのCOLS(Problem_due_dateとRoot_cause_identified)Python - Excelのインポート不可能なタイプの空のセル
は現在ありませんそれは、テーブルの罰金にデータを挿入するが、それは私が日時を使用して実行しているしようとしているテキスト
import pypyodbc
import xlrd
import datetime
book = xlrd.open_workbook("I:\Documents\Management\ReportAutomationProject\EMEA YTD.xls")
sheet = book.sheet_by_name("Page 1")
conn = pypyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
r"Dbq=I:\Documents\Management\ReportAutomationProject\Data.accdb;")
cur = conn.cursor()
query = """insert into Problems ([Number], Title, Active, Causing_IT_Service, Causing_Application, Causing_application_Instance, Incident_Severity, Problem_due_date, Assignment_group, Assignee, Impacted_countries, Impacted_regions, Business_impact_description, Workaround, Root_cause, Root_cause_level_3, Root_cause_level_2, Root_cause_level_1, Root_cause_identified, Causing_organisation, Problem_Summary, Activity_due, Approval_status, Major_incident, Approval_history, Approval_set, Business_duration, Duration) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"""
for r in range(1, sheet.nrows):
Number = sheet.cell(r, 0).value
Title = sheet.cell(r, 1).value
Active = sheet.cell(r, 2).value
Causing_IT_Service = sheet.cell(r, 3).value
Causing_Application = sheet.cell(r, 4).value
Causing_application_Instance = sheet.cell(r, 5).value
Incident_Severity = sheet.cell(r, 6).value
Problem_due_date = sheet.cell(r, 7).value
Problem_due_date = datetime.datetime(*xlrd.xldate_as_tuple(Problem_due_date, book.datemode))
Assignment_group = sheet.cell(r, 8).value
Assignee = sheet.cell(r, 9).value
Impacted_countries = sheet.cell(r, 10).value
Impacted_regions = sheet.cell(r, 11).value
Business_impact_description = sheet.cell(r, 12).value
Workaround = sheet.cell(r, 13).value
Root_cause = sheet.cell(r, 14).value
Root_cause_level_3 = sheet.cell(r, 15).value
Root_cause_level_2 = sheet.cell(r, 16).value
Root_cause_level_1 = sheet.cell(r, 17).value
Root_cause_identified=sheet.cell(r, 18).value
Root_cause_identified=datetime.datetime(*xlrd.xldate_as_tuple(Root_cause_identified, book.datemode))
Causing_organisation = sheet.cell(r, 19).value
Problem_Summary = sheet.cell(r, 20).value
Activity_due = sheet.cell(r, 21).value
Approval_status = sheet.cell(r, 22).value
Major_incident = sheet.cell(r, 23).value
Approval_history = sheet.cell(r, 24).value
Approval_set = sheet.cell(r, 25).value
Business_duration = sheet.cell(r, 26).value
Duration = sheet.cell(r, 27).value
values = (Number, Title, Active, Causing_IT_Service, Causing_Application, Causing_application_Instance, Incident_Severity, Problem_due_date, Assignment_group, Assignee, Impacted_countries, Impacted_regions, Business_impact_description, Workaround, Root_cause, Root_cause_level_3, Root_cause_level_2, Root_cause_level_1, now, Causing_organisation, Problem_Summary, Activity_due, Approval_status, Major_incident, Approval_history, Approval_set, Business_duration, Duration)
cur.execute(query, values)
sql = """
select * from Problems
"""
cur.execute(sql)
for results in cur:
print(results)
cur.close()
conn.commit()
conn.close()
としてデータを挿入します動作しているようですxlrd.xldate_as_tupleと.datetimeは、しかし、このエラーを受けたイム:
C:\Python34\python.exe C:/Users/d/PycharmProjects/untitled/test.py
Traceback (most recent call last):
File "C:/Users/d/PycharmProjects/untitled/test.py", line 11, in <module>
a1_as_datetime = datetime.datetime(*xlrd.xldate_as_tuple(a1, book.datemode))
File "C:\Python34\lib\site-packages\xlrd\xldate.py", line 65, in xldate_as_tuple
if xldate < 0.00:
TypeError: unorderable types: str() < float()
私は、このバックを持参いただきましドリルダウンしています。私はそれをうまく動作するforループから取り出します。私はその後、単純な印刷ステートメントに追加して、それがExcelのスプレッドシートの空白のセルに当たるとすぐにその失敗を認識しました。
これらのセルをスキップして再フォーマットする方法を教えてください。