質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

連結リスト

連結リストとは、データ構造のひとつであるリストの中で、要素が前後の要素の情報を持つことで、要素が連結(リンク)しているリストの事を呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3906閲覧

__init__() got an unexpected keyword argument 'phonetic' エラーがでる

0799750

総合スコア2

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

連結リスト

連結リストとは、データ構造のひとつであるリストの中で、要素が前後の要素の情報を持つことで、要素が連結(リンク)しているリストの事を呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/02 02:55

編集2021/07/02 04:36

openpyxlを使ってExcelファイル間でデータの連結を行いたいです。
wb1は報告書のフォーマットがあり、
wb2は報告書の入力データをリスト化したものです。

コード

import openpyxl as op wb1=op.load_workbook(r'C:\Usrs\不具合シート.xlsx') ws1=wb1['報告書'] number=ws1['X2'].value title=ws1['E5'].value gaiyou1=ws1['C13'].value #集計表をロード wb2 = op.load_workbook(r'C:\Users\不具合集計表.xlsx') ws2 = wb2['速報'] maxRow = ws2.max_row + 1#一番下 j = 1 for i in reversed(range(1,maxRow)): if ws2.cell(row=i, column=j).value != None:#セルの値がNoneではなかったら次の行から書き込み ws2.cell(i,2).value = number ws2.cell(i,12).value = title ws2.cell(i,7).value = gaiyou1

エラー

Traceback (most recent call last): File "C:\Users\タイトル無し3.py", line 20, in <module> wb2 = openpyxl.load_workbook(r'C:\Users\不具合集計表.xlsx') File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 317, in load_workbook reader.read() File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 282, in read self.read_worksheets() File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 228, in read_worksheets ws_parser.bind_all() File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\_reader.py", line 452, in bind_all self.bind_col_dimensions() File "C:\ProgramData\Anaconda3\lib\site-packages\openpyxl\worksheet\_reader.py", line 424, in bind_col_dimensions self.ws.column_dimensions[col] = ColumnDimension(self.ws, **cd) TypeError: __init__() got an unexpected keyword argument 'phonetic'

ほかの質問でスペルミスなどが指摘されていましたが
'phonetic'を使っていないのでどこを直すべきかわかりません。

number=ws1['X2'].value
title=ws1['E5'].value
gaiyou1=ws1['C13'].value

このあたりの書き方がおかしいのでしょうか。
よろしければ正しい書き方も教えていただければ幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2021/07/02 03:03

Tracebackを省略せずに全部書きましょう
0799750

2021/07/02 04:37

すみません、追加しました。
guest

回答1

0

ベストアンサー

OpenPyXLが対応していない機能が使われていてうまく読み込めないものと思います。

再現方法は、
Excelでファイルを新規作成
カラム(例えばA)全体を選択して、ホームのフォントグループの"ふりがなの表示/非表示"を選択してふりがなを表示状態にする
保存
そのファイルをopenpyxl.load_workbookで読み込む
です。同じエラーが発生することが確認できます。

データが入っているカラムをすべて選択して"ふりがなの表示/非表示"ボタンを押していって、非表示にすれば読み込めると思います。


(追記)

該当部分のコードが
https://foss.heptapod.net/openpyxl/openpyxl/-/blob/branch/3.0/openpyxl/worksheet/_reader.py#L424

python

1 def bind_col_dimensions(self): 2 for col, cd in self.parser.column_dimensions.items(): 3 if 'style' in cd: 4 key = int(cd['style']) 5 cd['style'] = self.ws.parent._cell_styles[key] 6 self.ws.column_dimensions[col] = ColumnDimension(self.ws, **cd)

https://foss.heptapod.net/openpyxl/openpyxl/-/blob/branch/3.0/openpyxl/worksheet/dimensions.py#L135

python

1 def __init__(self, 2 worksheet, 3 index='A', 4 width=DEFAULT_COLUMN_WIDTH, 5 bestFit=False, 6 hidden=False, 7 outlineLevel=0, 8 outline_level=None, 9 collapsed=False, 10 style=None, 11 min=None, 12 max=None, 13 customWidth=False, # do not write 14 visible=None, 15 auto_size=None,):

ですから、列全体の属性で、データ(ファイル)の方には入っているけれど何か対応してない属性があるんだろうな、と推測して、phoneticから連想される機能を試してみたら再現しました。

投稿2021/07/02 05:14

編集2021/07/02 05:22
quickquip

総合スコア11235

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0799750

2021/07/02 06:30

解決しました。 Excelの方に問題があったんですね。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問