Chuyển xlsx sang csv python openpyxl

Bạn thường muốn chuyển đổi các tệp Excel sang định dạng CSV. CSV tương thích hơn nhiều với mọi hệ điều hành hoặc hệ thống tệp

Excel thật tuyệt vời. Nhưng khi nói đến khả năng tương thích, CSV luôn thắng. Đó là bởi vì CSV không có gì khác hơn là các tệp văn bản thuần túy. Bất kỳ hệ thống nào có thể xử lý văn bản đều có thể đọc CSV

Nếu sử dụng Excel hoặc phần mềm bảng tính khác, bạn có thể mở tệp Excel và lưu dưới dạng CSV. Đó là cách dễ nhất để chuyển đổi Excel thành CSV

Nhưng đó không phải là cách tốt nhất mọi lúc

  1. Nếu tệp excel của bạn lớn, phần mềm bảng tính của bạn sẽ mất rất nhiều thời gian để đọc và ghi vào đĩa
  2. Nếu bạn có nhiều tệp Excel, việc chuyển đổi từng tệp thành CSV có thể là một cơn ác mộng
  3. Bạn không thể thực hiện việc này nếu bạn đang sử dụng hệ thống không có hoặc không hỗ trợ phần mềm bảng tính. Hầu hết các máy chủ hoặc chức năng không có máy chủ đều thuộc danh mục này
  4. Nếu bạn có nhiều trang tính trong tệp Excel của mình, việc lưu chúng riêng lẻ vào CSV có thể gây nhầm lẫn

Nhưng nếu bạn biết một chút về Python, bạn có thể chuyển đổi hàng trăm tệp Excel thành CSV trong vài giây

Đừng lo lắng, ngay cả khi bạn không biết cách viết mã bằng Python. Bạn vẫn có thể chuyển đổi các tệp Excel theo cách tương tự với gói tôi đã tạo

Liên kết được Tài trợ

Cài đặt các phụ thuộc Python để chuyển đổi từ Excel sang CSV

Bước đầu tiên là cài đặt các yêu cầu. Đối với điều này, chúng tôi sẽ sử dụng Pandas với Openpyxl

Pandas là một thư viện phân tích và thao tác dữ liệu trong Python. Tôi nên nói thư viện "The" vì Pandas nổi tiếng trong số các nhà phát triển Python

Openpyxl là một thư viện Python để đọc và ghi các tệp excel. Chúng tôi sẽ không trực tiếp làm việc với thư viện này. Thay vào đó, Pandas sử dụng Openpyxl dưới mui xe

Để cài đặt cả hai gói, chúng ta có thể sử dụng kho lưu trữ PyPI. Đoạn mã sau sẽ cài đặt nó trực tiếp trên Virtualenv của bạn hoặc với sự trợ giúp của Thơ

# On virtualenv
pip install pandas openpyxl

# On Poetry
poetry add pandas openpyxl

Nếu bạn đang sử dụng ngăn xếp anaconda, bạn chỉ cần cài đặt Openpyxl. Điều này là do cài đặt anaconda đi kèm với Pandas và hầu hết các gói thao tác dữ liệu phổ biến khác

conda install -c anaconda openpyxl.

Chuyển đổi một tệp Excel đơn thành CSV

cái này đơn giản. Bạn chỉ phải đọc excel bằng Pandas và viết lại dưới dạng CSV

Ba dòng mã sau đây sẽ chuyển đổi tệp Excel của bạn thành CSV

import pandas as pd
df = pd.read_excel("<PATH TO EXCEL>.xlsx")
df.to_csv("<PATH TO CSV>.csv")

Nếu trường hợp sử dụng của bạn đơn giản như thế này, có lẽ phần mềm bảng tính sẽ tiện lợi hơn Python

Liên kết được Tài trợ

Chuyển đổi tệp Excel có nhiều trang tính thành CSV riêng biệt

Đây là trường hợp chuyển đổi Excel sang CSV phức tạp hơn một chút

Trong ví dụ sau, trước tiên chúng tôi đọc tên trang tính của tệp Excel của chúng tôi. Sau đó, chúng tôi lặp qua các tên trang tính riêng lẻ và lưu chúng dưới dạng CSV riêng biệt. Tập lệnh lưu các tệp CSV trong cùng một thư mục với tên trang tính là tên tệp của chúng

import os
import pandas as pd

file_path = "<PATH TO EXCEL>.xlsx"

// Get sheet names of the file
sheet_names = pd.ExcelFile(file_path).sheet_names

// Loop through sheet names
for sheet in sheet_names:
    df = pd.read_excel(file_path, sheet_name=sheet)# Read sheet

    # Create a new file path with sheet name
    csv_file_name = os.path.join(os.path.dirname(file_path), sheet + '.csv')
    df.to_csv(csv_file_name, index=False)

Chuyển đổi nhiều Excel sang CSV cùng một lúc

Giả sử thư mục làm việc của bạn có nhiều tệp Excel và bạn muốn chuyển đổi chúng thành CSV. Bạn có thể sử dụng kỹ thuật này. Đầu tiên, chúng tôi giả sử rằng chúng tôi chỉ có một trang tính cho mỗi tệp. Sau đó, chúng tôi sẽ mở rộng mã của mình thành một kịch bản nhiều tệp-nhiều trang tính

Mã Python sau đây sử dụng một mô-đun tiêu chuẩn gọi là toàn cầu. Glob giúp chúng tôi so khớp mẫu đường dẫn tệp. Chúng tôi sử dụng nó để khớp với tất cả các đường dẫn tệp kết thúc bằng. xlsx trong thư mục làm việc

Sau đó, chúng tôi đã tạo một chức năng để đọc và lưu Excel vào CSV. Chúng tôi gọi chức năng này trên mỗi đường dẫn tệp mà chúng tôi đã xác định

import os
from glob import glob

import pandas as pd


def convert_excel_to_csv(file_path):
    df = pd.read_excel(file_path)
    df.to_csv(file_path.replace(".xlsx", ".csv"), index=False)
    print("Converted {} to CSV".format(file_path))


def convert_excels_in_directory_to_csv(directory):
    for file_path in glob(directory + "/*.xlsx"):
        convert_excel_to_csv(file_path)


if __name__ == "__main__":
    directory = os.getcwd()
    convert_excels_in_directory_to_csv(directory)

Chuyển đổi từ Excel sang CSV, trong đó nhiều Excel có nhiều trang tính

Liên kết được Tài trợ

Đây có lẽ là phần khó. Thư mục làm việc của chúng tôi có nhiều tệp Excel. Và mỗi tệp có nhiều sheet. Mục tiêu của chúng tôi là

  1. tạo một thư mục cho mỗi tệp excel;
  2. chuyển đổi các trang tính trong tệp excel sang CSV và;
  3. lưu trữ chúng bên trong thư mục mới tạo
import os
from glob import glob

import pandas as pd


def convert_exels_with_sheets_to_csvs(directory):

    for file_path in glob(directory + "/*.xlsx"):
        excel_file_name = os.path.basename(file_path)
        excel_file_name = excel_file_name.replace(".xlsx", "")
        new_directory = directory + "/" + excel_file_name
        os.mkdir(new_directory)
        for sheet_name in pd.ExcelFile(file_path).sheet_names:
            sheet_df = pd.read_excel(file_path, sheet_name)
            sheet_df.to_csv(new_directory + "/" + sheet_name + ".csv", index=False)
            print("Converted {} to CSV".format(sheet_name))


if __name__ == "__main__":
    directory = os.getcwd()
    convert_exels_with_sheets_to_csvs(directory)

Đoạn script trên sử dụng global để tìm nạp tất cả các tệp Excel trong thư mục hiện tại. Sau đó, nó sử dụng tiện ích os.mkdir để tạo thư mục cho từng tệp Excel. Cuối cùng, nó lặp qua tên trang tính và tạo một CSV cho mỗi trang tính trong thư mục mới

Liên kết được Tài trợ

suy nghĩ cuối cùng

Chuyển đổi từ Excel sang CSV có thể vừa dễ vừa khó. Thật dễ dàng nếu bạn chỉ có một tệp với rất ít trang tính. Nhưng nó có thể phức tạp nếu không

Để giải quyết vấn đề, bạn cần chuyển đổi chúng theo chương trình. Ngoài ra, chuyển đổi Excel sang CSV theo chương trình mang lại lợi ích không phụ thuộc vào phần mềm bảng tính

Trong bài đăng này, chúng tôi đã thảo luận về các phương pháp khác nhau để chuyển đổi Excel sang CSV. Trong các dự án của mình, bạn có thể sử dụng chúng trực tiếp hoặc lấy các khái niệm và áp dụng chúng theo cách khác

Làm cách nào để chuyển đổi Excel sang CSV bằng openpyxl?

Tạo một biến để lưu đường dẫn của file excel đầu vào. Để tạo/tải đối tượng sổ làm việc, hãy chuyển tệp excel đầu vào tới hàm load_workbook() của mô-đun openpyxl (tải sổ làm việc). Mở tệp CSV đầu ra ở chế độ ghi bằng các hàm open() và writer() để chuyển đổi tệp excel đầu vào thành tệp CSV .

Làm cách nào để chuyển đổi Excel sang CSV theo chương trình?

Sử dụng thư viện này, bạn có thể chuyển đổi tệp Excel có văn bản đơn giản thành tệp CSV. .
SaveAs(Chuỗi,Chuỗi)
SaveAs(Chuỗi,Chuỗi,Mã hóa)
SaveAs(Luồng,Chuỗi)
SaveAs(Luồng,Chuỗi,Mã hóa)

Làm cách nào để đọc tệp XLSX dưới dạng CSV bằng Python?

Các bước chuyển đổi Excel sang CSV bằng Python .
Bước 1. Cài đặt gói Pandas. Nếu bạn chưa làm như vậy, hãy cài đặt gói Pandas. .
Bước 2. Chụp đường dẫn nơi tệp Excel được lưu trữ. .
Bước 3. Chỉ định Đường dẫn nơi Tệp CSV Mới sẽ được Lưu trữ. .
Bước 4. Chuyển đổi Excel sang CSV bằng Python

Openpyxl có hoạt động với CSV không?

Bạn cũng có thể tải xuống tệp CSV từ kho mã GitHub của cuốn sách này. Mã của bạn sử dụng mô-đun csv của Python ngoài OpenPyXL . Bạn tạo một hàm, csv_to_excel() , sau đó chấp nhận hai đối số. csv_file - Đường dẫn đến tệp CSV đầu vào.