编写程序,生成 50 个 Excel 文件,每个文件中包含 5 列数据,其中每个单元格内的内容随机生成,并且每个 Excel 文件的数据行数不相同。然后创建一个 SQLite 数据库,其结 构与 Excel 文件相符合,最后把前面生成的 50 个 Excel 文件中的数据导入到这个数据库 中。
时间: 2024-03-03 20:51:07 浏览: 137
好的,我们可以使用 Python 的 openpyxl 库来读取 Excel 文件,使用 SQLite3 库来创建数据库和表,然后使用 SQL 语句将数据插入到数据库中。
以下是完整的 Python 代码:
```python
import openpyxl
import random
import sqlite3
# 生成 50 个 Excel 文件
for i in range(1, 51):
# 创建一个新的工作簿
wb = openpyxl.Workbook()
# 选择第一个工作表
ws = wb.active
# 随机生成行数
rows = random.randint(1, 20)
# 在第一行添加标题
ws.append(['列1', '列2', '列3', '列4', '列5'])
# 随机生成数据并添加到工作表中
for j in range(rows):
data = [random.randint(1, 100) for i in range(5)]
ws.append(data)
# 保存工作簿
wb.save(f'file_{i}.xlsx')
# 创建 SQLite 数据库和表
conn = sqlite3.connect('data.db')
c = conn.cursor()
c.execute('''CREATE TABLE data
(column1 text, column2 text, column3 text, column4 text, column5 text)''')
# 导入 Excel 文件中的数据到数据库中
for i in range(1, 51):
# 打开 Excel 文件
wb = openpyxl.load_workbook(f'file_{i}.xlsx')
# 选择第一个工作表
ws = wb.active
# 获取数据行数和列数
max_row = ws.max_row
max_column = ws.max_column
# 将数据插入到数据库中
for row in range(2, max_row+1):
data = []
for column in range(1, max_column+1):
cell_value = ws.cell(row, column).value
data.append(str(cell_value))
c.execute("INSERT INTO data VALUES (?, ?, ?, ?, ?)", tuple(data))
# 提交更改并关闭连接
conn.commit()
conn.close()
```
这段代码将生成 50 个 Excel 文件,每个文件的行数都是随机的,并且每个单元格内的内容都是随机生成的。每个 Excel 文件都将包含 5 列数据。然后,它将创建一个名为 "data.db" 的 SQLite 数据库,并在其中创建一个名为 "data" 的表,该表与 Excel 文件相对应。最后,它将遍历前面生成的 50 个 Excel 文件,将数据插入到数据库中。
阅读全文
相关推荐


















