\

PythonでExcelファイルを操作する際に、openpyxlライブラリを使用することがよくあります。しかし、特定の文字列をExcelファイルに書き込むときにopenpyxl.utils.exceptions.IllegalCharacterErrorが発生することがあります。

このエラーは、Excelが認識できない文字(ASCIIコードが32未満の文字)が含まれているときに発生します。この問題を解決するためには、不適切な文字を取り除くか、適切な文字に置き換える必要があります。

以下に、この問題を解決するためのPythonコードの一例を示します。

import re
import openpyxl

_ILLEGAL_CHARACTERS_RE = re.compile(r"[\\000-\\010]|[\\013-\\014]|[\\016-\\037]")

def _fix_csv(csv_file_path: str, fixed_csv_path: str):
    with open(csv_file_path, "r") as fi:
        with open(fixed_csv_path, "w") as fo:
            line = fi.readline()
            while line:
                fixed_line = _ILLEGAL_CHARACTERS_RE.sub("", line)
                fo.write(fixed_line)
                line = fi.readline()

def csv_to_xlsx(csv_file_path: str, output_file_path: str):
    fixed_csv_path = '.temp.csv'
    try:
        _fix_csv(csv_file_path, fixed_csv_path)
        wb = openpyxl.Workbook(write_only=True)
        wb.create_sheet('Sheet1')
        wb.active = wb.sheetnames.index('Sheet1')
        ws = wb.active
        with open(fixed_csv_path, "r") as f:
            reader = csv.reader(f)
            for row in reader:
                ws.append(row)
        wb.save(output_file_path)
    finally:
        if os.path.exists(fixed_csv_path):
            os.remove(fixed_csv_path)

csv_to_xlsx("入力のcsvファイル.csv", "出力のxlsxファイル.xlsx")

このコードは、CSVファイルから不適切な文字を取り除き、その結果を新しいCSVファイルに書き込みます。その後、新しいCSVファイルを読み込み、その内容をExcelファイルに書き込みます。

このように、openpyxl.utils.exceptions.IllegalCharacterErrorは、適切な前処理によって解決することが可能です。Pythonとopenpyxlを使用して、Excelファイルの操作を行う際には、このようなエラーに注意してください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です