追加匯出 + 自動切換 sheet
⚠️ excel 中的每個 sheet 最多隻能儲存 1048576 行資料
# 獲取專案的根路徑 rootPath
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = curPath[:curPath.find(你的專案名稱 + "/") + len(
你的專案名稱 + "/")]
# 臨時檔案
local_file_path = os.path.join(rootPath, "temp.xlsx")
# 檢查並刪除現有的臨時檔案
if os.path.exists(local_file_path):
os.remove(local_file_path)
sheet_number = 1
sheet_name_format = "Sheet_{}"
# 資料量大,匯出的資料又包含url的話,會瘋狂報警告,大家用不到可以刪掉
workbook = xlsxwriter.Workbook(local_file_path, options={'strings_to_urls': False})
table = workbook.add_worksheet(sheet_name_format.format(sheet_number))
# sheet 資料總條數
page_total = 0
# 要寫的行
row_number = 1
# 分批匯出,每次 100000 條資料
default_limit = 100000
# 分批匯出,第 1 頁開始
page_number = 1
while True:
# 分批獲取資料
data_list = get_data_list(page_number, default_limit) # 你的資料
if len(data_list) == 0:
break
# sheet總條數,0代表第一次寫入資料
if page_total == 0:
# 標題
header = [你的標題]
table.write_row(0, 0, header)
# todo 因為我把每個 sheet 控制在了 100萬條,就切換下一個 sheet 了。
# todo 如果各位要是玩極限別忘了這裡 page_total + 1
for item in data_list:
table.write_row(row_number, 0, list(item.values()))
row_number = row_number + 1
page_total = page_total + len(data_list)
# 自動切換sheet
if page_total >= 1000000:
# 換下一個sheet
sheet_number = sheet_number + 1
table = workbook.add_worksheet(sheet_name_format.format(sheet_number))
# 初始化
page_total = 0
row_number = 1
page_number = page_number + 1
# 關閉
workbook.close()