Created
March 14, 2016 11:54
-
-
Save antiproblemist/0c2694cc17d7e39e9d12 to your computer and use it in GitHub Desktop.
Revisions
-
antiproblemist created this gist
Mar 14, 2016 .There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,62 @@ ''' This code uses the openpyxl package for playing around with excel using Python code to convert complete excel workbook (all sheets) to an SQLite database The code assumes that the first row of every sheet is the column name Every sheet is stored in a separate table The sheet name is assigned as the table name for every sheet ''' import sqlite3 import openpyxl from openpyxl import load_workbook import re def slugify(text, lower=1): if lower == 1: text = text.strip().lower() text = re.sub(r'[^\w _-]+', '', text) text = re.sub(r'[- ]+', '_', text) return text #Replace with a database name con = sqlite3.connect('test.db') #replace with the complete path to youe excel workbook wb = load_workbook(filename=r'abc.xlsx') sheets = wb.get_sheet_names() for sheet in sheets: ws = wb[sheet] columns= [] query = 'CREATE TABLE ' + str(slugify(sheet)) + '(ID INTEGER PRIMARY KEY AUTOINCREMENT' for row in ws.rows[0]: query += ', ' + slugify(row.value) + ' TEXT' columns.append(slugify(row.value)) query += ');' con.execute(query) tup = [] for i, rows in enumerate(ws): tuprow = [] if i == 0: continue for row in rows: tuprow.append(unicode(row.value).strip()) if unicode(row.value).strip() != 'None' else tuprow.append('') tup.append(tuple(tuprow)) insQuery1 = 'INSERT INTO ' + str(slugify(sheet)) + '(' insQuery2 = '' for col in columns: insQuery1 += col + ', ' insQuery2 += '?, ' insQuery1 = insQuery1[:-2] + ') VALUES(' insQuery2 = insQuery2[:-2] + ')' insQuery = insQuery1 + insQuery2 con.executemany(insQuery, tup) con.commit() con.close()