Hướng dẫn convert xlsx with multiple sheets to csv python - chuyển đổi xlsx với nhiều trang tính sang csv python

Tôi muốn chuyển đổi tất cả các tờ tài liệu excel (.xls) thành CSV, nếu tài liệu Excel chỉ có một tờ thì tôi sẽ chuyển đổi như sau-

   wb = open_workbook(path2)
    sh = wb.sheet_by_name('Sheet1')
    csv_file = open(path2, 'w')
    wr = csv.writer(csv_file, quoting=csv.QUOTE_ALL)
    for rownum in range(sh.nrows):
        wr.writerow(sh.row_values(rownum))
    csv_file.close()

Nếu tài liệu Excel(.xls) của tôi có nhiều hơn một tờ tức là .________ 10 so với cách chuyển đổi tất cả các tờ thành CSV.

Bất kỳ trợ giúp sẽ được đánh giá cao.

Đã hỏi ngày 1 tháng 2 năm 2018 lúc 9:29Feb 1, 2018 at 9:29

Hướng dẫn convert xlsx with multiple sheets to csv python - chuyển đổi xlsx với nhiều trang tính sang csv python

1

Tôi đang sử dụng python3.x trong môi trường anaconda và trong trường hợp của tôi, tên tệp của tôi là 'Ấn Độ-wms.xlsx' có 40 bảng khác nhau bên dưới mã sẽ tạo 40 tệp CSV khác nhau có tên là tên trang tính của tệp Excel, là 'key.csv'. Hy vọng điều này sẽ giúp vấn đề của bạn.

    import pandas as pd
    df = pd.read_excel('INDIA-WMS.xlsx', sheet_name=None)  
    for key in df.keys(): 
        df[key].to_csv('%s.csv' %key)

Ví dụ: nếu bạn có các bảng khác nhau như 'Sheet1', 'Sheet2', 'Sheet3', thì mã trên sẽ tạo tệp CSV khác nhau dưới dạng 'Sheet1.csv', 'Sheet2.csv', 'Sheet3.csv'. Đây là 'khóa' là tên trang tính của sổ làm việc Excel của bạn. Nếu bạn muốn sử dụng nội dung dữ liệu bên trong các tờ, bạn có thể sử dụng vòng lặp cho

    import pandas as pd
    df = pd.read_excel('INDIA-WMS.xlsx', sheet_name=None)  
    for key in df.keys(): 
        df[key].to_csv('%s.csv' %key)
1

Laurisvr

2.6145 huy hiệu vàng22 Huy hiệu bạc44 Huy hiệu đồng5 gold badges22 silver badges44 bronze badges

Đã trả lời ngày 1 tháng 8 năm 2019 lúc 16:23Aug 1, 2019 at 16:23

Hướng dẫn convert xlsx with multiple sheets to csv python - chuyển đổi xlsx với nhiều trang tính sang csv python

Ashu007Ashu007Ashu007

7371 Huy hiệu vàng9 Huy hiệu bạc13 Huy hiệu đồng1 gold badge9 silver badges13 bronze badges

2

Sự hiểu biết của tôi là bạn đang cố gắng lấy một tệp CSV cho mỗi tờ.

Bạn có thể có được điều đó bằng cách thực hiện các mục sau:

excel_file = 'data/excel_file.xlsx'
all_sheets = pd.read_excel(excel_file, sheet_name=None)
sheets = all_sheets.keys()

for sheet_name in sheets:
    sheet = pd.read_excel(excel_file, sheet_name=sheet_name)
    sheet.to_csv("data/%s.csv" % sheet_name, index=False)

Nếu bạn thực sự muốn kết hợp tất cả các tờ cho một CSV, tất cả họ cần phải có cùng tên cột. Bạn có thể kết hợp tất cả các tệp CSV của mình thành một tệp bằng cách thực thi các mục sau:

import glob
import os
all_files = glob.glob(os.path.join("data", "*.csv"))
df_from_each_file = (pd.read_csv(f, sep=',') for f in all_files)
df_merged = pd.concat(df_from_each_file, ignore_index=True)
df_merged.to_csv( "data/merged.csv")

Nguồn cho đoạn trích thứ hai

Đã trả lời ngày 21 tháng 3 năm 2020 lúc 22:30Mar 21, 2020 at 22:30

Hướng dẫn convert xlsx with multiple sheets to csv python - chuyển đổi xlsx với nhiều trang tính sang csv python

HadrienhadrienHadrien

1353 Huy hiệu bạc10 Huy hiệu đồng3 silver badges10 bronze badges

1

    import pandas as pd
    df = pd.read_excel('INDIA-WMS.xlsx', sheet_name=None)  
    for key in df.keys(): 
        df[key].to_csv('%s.csv' %key)
2 để lấy tất cả các tên trang, sau đó lặp nó và tự động đặt tên vào bảng_name

Đã trả lời ngày 1 tháng 2 năm 2018 lúc 9:32Feb 1, 2018 at 9:32

ExpratorexpratorExprator

26.1k6 Huy hiệu vàng43 Huy hiệu bạc54 Huy hiệu đồng6 gold badges43 silver badges54 bronze badges

0

Tôi đã làm theo giải pháp của ASHU007, nhưng trên Python3.9 và Pandas 1.2.0 Tôi cần thay đổi

    import pandas as pd
    df = pd.read_excel('INDIA-WMS.xlsx', sheet_name=None)  
    for key in df.keys(): 
        df[key].to_csv('%s.csv' %key)
3 thành
    import pandas as pd
    df = pd.read_excel('INDIA-WMS.xlsx', sheet_name=None)  
    for key in df.keys(): 
        df[key].to_csv('%s.csv' %key)
4 như vậy:

import pandas as pd
df = pd.read_excel('file_name.xlsx', sheet_name=None)  
for key in df.keys(): 
    df[key].to_csv('{}.csv'.format(key))

Đã trả lời ngày 29 tháng 12 năm 2020 lúc 19:04Dec 29, 2020 at 19:04

1

Bạn có thể thử mã dưới đây này đã làm việc cho tôi.

import pandas as pd
data = pd.read_excel('sample1.xlsx', sheet_name=None)

# loop through the dictionary and save csv
for sheet_name, df in data.items():
df.to_csv(f'{sheet_name}.csv')

Đã trả lời ngày 15 tháng 7 năm 2021 lúc 16:13Jul 15, 2021 at 16:13

Tôi đã gặp phải một vấn đề tương tự là cố gắng liệt kê nhiều tờ Excel trong một tệp Excel vào một tờ Excel trước khi chuyển đổi sang .csv. Xin lưu ý rằng thuật ngữ 'PC' và 'pc_city.xlsx' chỉ là nhãn của dữ liệu lượng mưa mà tôi đang làm việc.

Đây là những gì làm việc cho tôi:

import pandas as pd

excel_file = r'C:\Users\yourpath\PC_City.xlsx'
df = pd.read_excel(excel_file, sheetname=None)
xlsx = pd.ExcelFile(excel_file)
PC_sheets = []
for sheet in xlsx.sheet_names:
    PC_sheets.append(xlsx.parse(sheet))
    PC = pd.concat(PC_sheets)

PC.to_csv('PC_City.csv', encoding='utf-8', index=False)   

Tôi mới lập trình, vì vậy có thể có một cách tốt hơn để đi về điều này. Hi vọng điêu nay co ich.

Đã trả lời ngày 26 tháng 11 năm 2018 lúc 2:40Nov 26, 2018 at 2:40

Hướng dẫn convert xlsx with multiple sheets to csv python - chuyển đổi xlsx với nhiều trang tính sang csv python

import pandas as pd

df = pd.read_excel('data.xlsx', sheet_name=None)  
for key in df: 
   df[key].to_csv('%s.csv' %key)

Đã trả lời ngày 25 tháng 4 năm 2020 lúc 17:36Apr 25, 2020 at 17:36

Hướng dẫn convert xlsx with multiple sheets to csv python - chuyển đổi xlsx với nhiều trang tính sang csv python