簡體   English   中英

如何在python中使用xlsxwriter從SQLITE導入數據到excel

[英]how to import data from SQLITE to excel using xlsxwriter in python

import sqlite3
from xlsxwriter.workbook import Workbook
workbook = Workbook('output2.xlsx')
worksheet = workbook.add_worksheet()

conn=sqlite3.connect('test.sqlite')
c=conn.cursor()
c.execute("select * from abc")
mysel=c.execute("select * from abc ")
for row in mysel:
 print row
 worksheet.write(0, 0, row[0])
workbook.close()

這是 SQLITE 數據庫表的布局

id  sno
1   100
2   200
3   300
4   400

使用 worksheet.write(0, 0, row[0]) 我在 Excel 文件的第一個單元格中得到輸出為4

使用 worksheet.write(0, 0, row[1]) 我在 Excel 文件的第一個單元格中得到輸出為400

我無法弄清楚FOR LOOP問題。

請幫忙

import sqlite3
from xlsxwriter.workbook import Workbook
workbook = Workbook('output2.xlsx')
worksheet = workbook.add_worksheet()

conn=sqlite3.connect('test.sqlite')
c=conn.cursor()
c.execute("select * from abc")
mysel=c.execute("select * from abc ")
for i, row in enumerate(mysel):
    for j, value in enumerate(row):
        worksheet.write(i, j, row[j])
workbook.close()

您的循環很好,只是您將每一行數據寫入同一個單元格。 我不知道 xlswriter 但我猜第一個和第二個參數是行和列。 如果要將所有數據寫入表格,則需要在每次寫入操作時更改這些數據。

像這樣的東西(未經測試)?

import sqlite3
from xlsxwriter.workbook import Workbook
workbook = Workbook('output2.xlsx')
worksheet = workbook.add_worksheet()

conn=sqlite3.connect('test.sqlite')
c=conn.cursor()
c.execute("select * from abc")
mysel=c.execute("select * from abc ")
for i, row in enumerate(mysel):
    print row
    worksheet.write(i, 0, row[0])
    worksheet.write(i, 1, row[1])
workbook.close()

要處理多列,你可以這樣做

import sqlite3
from xlsxwriter.workbook import Workbook
workbook = Workbook('output2.xlsx')
worksheet = workbook.add_worksheet()

conn=sqlite3.connect('test.sqlite')
c=conn.cursor()
c.execute("select * from abc")
mysel=c.execute("select * from abc ")
for i, row in enumerate(mysel):
    for j, value in enumerate(row):
        worksheet.write(i, j, value)
workbook.close()

您可以創建包含多個工作表的 XLSX 文件,而不是在同一個文件中創建多個 CSV 工作表。 根據您的需求,它可能是一個很好的解決方案。 這就是我所擁有的。

import sqlite3
import xlsxwriter
from tkinter import filedialog # Used to get a path where to save the new excel file
from datetime import datetime # Used to name the file with today's date

DB_Path = filedialog.askdirectory() # OPTIONAL: Asks to select folder path
workbook = xlsxwriter.Workbook(DB_Path+"/"+"MyDatabaseInExcel  "+datetime.now().strftime("%Y %m %d")+'.xlsx') # Create file
conn = sqlite3.connect('MyDatabaseInSQLite3.db') # Connect to your database
cursor = conn.cursor() # Create the cursor
tables = list(cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")) # Get all table names
tables = list(map(lambda x: x[0], tables)) # convert the list of tuple to list of str
for table in tables:
    try: worksheet = workbook.add_worksheet(name=table[0:31]) # Sheet names in excel can have up to 31 chars
    except:pass
    for row_number, row in enumerate(cursor.execute('SELECT * FROM '+table)): # row is a tuple here
        for column_number, item in enumerate(row):
            try: worksheet.write(row_number, column_number, item) # Write the cell in the current sheet
            except:pass
workbook.close() # Saves the new document

我使用了一些嘗試只是為了防止出於任何原因破解程序而不是編寫其他工作表。 對我來說,這在我的項目中很有趣。 如果你願意,你不能使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM