Python-Skript skip header-Zeile in der excel-Datei
Schrieb ich ein python-Skript, das ziehen von excel-Dateien aus einem Ordner und schreibt Sie in eine SQL-Tabelle. Ich habe den code zu arbeiten, aber nur, wenn ich löschen Sie die erste Zeile der excel-Datei, die enthält die Header. Ich bin neu in Python, also das ist wohl etwas zu einfach, aber ich sah eine Menge von verschiedenen Techniken und konnte nicht herausfinden, wie legen Sie es in mein code. Irgendwelche Ideen würde sehr geschätzt werden!
# Import arcpy module
from xlrd import open_workbook ,cellname
import arcpy
import pyodbc as p
# Database Connection Info
server = "myServer"
database = "my_Tables"
connStr = ('DRIVER={SQL Server Native Client 10.0};SERVER=' + server + ';DATABASE=' + database + ';' + 'Trusted_Connection=yes')
# Assign path to Excel file
file_to_import = '\\\\Location\\Report_Test.xls'
# Assign column count
column_count=10
# Open entire workbook
book = open_workbook(file_to_import)
# Use first sheet
sheet = book.sheet_by_index(0)
# Open connection to SQL Server Table
conn = p.connect(connStr)
# Get cursor
cursor = conn.cursor()
# Assign the query string without values once, outside the loop
query = "INSERT INTO HED_EMPLOYEE_DATA (Company, Contact, Email, Name, Address, City, CentralCities, EnterpriseZones, NEZ, CDBG) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
# Iterate through each row
for row_index in range(sheet.nrows):
row_num = row_index
Company = sheet.cell(row_index,0).value
Contact = sheet.cell(row_index,1).value
Email = sheet.cell(row_index,2).value
Name = sheet.cell(row_index,3).value
Address = sheet.cell(row_index,4).value
City = sheet.cell(row_index,5).value
CentralCities = sheet.cell(row_index,6).value
EnterpriseZones = sheet.cell(row_index,7).value
NEZ = sheet.cell(row_index,8).value
CDBG = sheet.cell(row_index,9).value
values = (Company, Contact, Email, Name, Address, City, CentralCities, EnterpriseZones, NEZ, CDBG)
cursor.execute(query, values)
# Close cursor
cursor.close()
# Commit transaction
conn.commit()
# Close SQL server connection
conn.close()
- Klingt wie Sie brauchen nur zu ändern
for row_index in range(sheet.nrows):
zufor row_index in range(1, sheet.nrows):
überspringen der ersten Zeile. - Es gibt nichts in Excel, die sagt: "dies ist eine Kopfzeile" also Sie haben entweder wissen, wie viele Zeilen zu überspringen (Aya ' s Kommentar) oder erraten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine Initialisierung der iteration in der zweiten Reihe. Versuchen Sie Folgendes:
Edit: Wenn Sie brauchen, um die Iteration über eine Liste .xls-Dateien, wie Sie fragte in den Kommentaren, die grundlegende Idee ist die Durchführung einer äußeren Schleife über die Dateien. Hier geht es darum einige Hinweise:
Location
Ordner. In diesem Fall wird das Skript nicht findenReport_Test.XLS
- Datei als variablefile_to_import
enthält den Dateinamen aber nicht den Pfad zu der Datei. Versuchen Sie, den Pfad in den Namen der Datei, die Sie öffnen möchten. Speziell, ändern Sie die Zeile, in der Sie die Datei öffnen, für die folgenden:book = open_workbook(folder_to_import + '\\' + file_to_import)
. Viel Glück!oder wenn du zu faul bist:
Der Vorteil ist, dass Sie nicht haben, zu täuschen, mit der komplizierten cell-array-Dereferenzierung: Sie haben das row-Objekt und können nur ein
row[col].value
. Aufgeräumter.