回答編集履歴
5
追記
answer
CHANGED
@@ -11,4 +11,19 @@
|
|
11
11
|
とか
|
12
12
|
セルが結合されている事実の方が意図していないことなのでExcelシートを直す
|
13
13
|
とか
|
14
|
-
そういったことになるかと思いますが。
|
14
|
+
そういったことになるかと思いますが。
|
15
|
+
|
16
|
+
----
|
17
|
+
(追記)
|
18
|
+
|
19
|
+
どのセルがマージされているかという情報は、ワークシートの`merged_cells.ranges`に入っています。
|
20
|
+
対象にしているセルがどうマージされていて書き換えるにはどこのセルの値を変えればいいか? を知るにはそこから地道に探索するしかないでしょう。
|
21
|
+
セルの方にはスタイルに関係する情報だけがあって、どのようにマージされているかという情報はありません。
|
22
|
+
(xlsxファイルのつくりがそうなっているという話です)
|
23
|
+
|
24
|
+
参考
|
25
|
+
[MergedCellはスタイルに関連する情報だけしかない](https://openpyxl.readthedocs.io/en/stable/api/openpyxl.cell.cell.html#openpyxl.cell.cell.MergedCell)
|
26
|
+
[ワークシートのmerged_cells.rangesを使えという指示](https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.worksheet.html#openpyxl.worksheet.worksheet.Worksheet.merged_cell_ranges)
|
27
|
+
[ワークシートのmerged_cellsのクラス](https://openpyxl.readthedocs.io/en/stable/api/openpyxl.worksheet.cell_range.html#openpyxl.worksheet.cell_range.MultiCellRange)
|
28
|
+
|
29
|
+
[python - How to detect merged cells in excel with openpyxl - Stack Overflow](https://stackoverflow.com/questions/39574991/how-to-detect-merged-cells-in-excel-with-openpyxl)
|
4
誤
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
というエラーコードを**読んで分かる**通り、そのMergedCell型のvalue属性は読み出し専用であって書き込みはできません。
|
5
5
|
|
6
6
|
例としてA1とB1が結合されているとすると、そこに表示されている値を持っているのはA1のセルで、B1のセルではありません。
|
7
|
-
ここで"B1のセルの値を書き換える"というコードが実行された時、そのコードを書いた人の意思が"A1セルの値を変えたかった"のか"B1セルの値を**誤って**変えようとした"のか、**あいまいなので**フェイルファ
|
7
|
+
ここで"B1のセルの値を書き換える"というコードが実行された時、そのコードを書いた人の意思が"A1セルの値を変えたかった"のか"B1セルの値を**誤って**変えようとした"のか、**あいまいなので**フェイルファストとしてエラーを返すのは自然な設計だと思います。
|
8
8
|
|
9
9
|
コードが**読めません**ので質問者さんがどういうつもりでコードを書いたのか分かりません。
|
10
10
|
結合されて値を書き込めないセルかどうか、型をチェックしてMergedCell型ならその処理を飛ばす
|
3
フェイルファストの間違いでした
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
というエラーコードを**読んで分かる**通り、そのMergedCell型のvalue属性は読み出し専用であって書き込みはできません。
|
5
5
|
|
6
6
|
例としてA1とB1が結合されているとすると、そこに表示されている値を持っているのはA1のセルで、B1のセルではありません。
|
7
|
-
ここで"B1のセルの値を書き換える"というコードが実行された時、そのコードを書いた人の意思が"A1セルの値を変えたかった"のか"B1セルの値を**誤って**変えようとした"のか、**あいまいなので**フェイル
|
7
|
+
ここで"B1のセルの値を書き換える"というコードが実行された時、そのコードを書いた人の意思が"A1セルの値を変えたかった"のか"B1セルの値を**誤って**変えようとした"のか、**あいまいなので**フェイルファーストとしてエラーを返すのは自然な設計だと思います。
|
8
8
|
|
9
9
|
コードが**読めません**ので質問者さんがどういうつもりでコードを書いたのか分かりません。
|
10
10
|
結合されて値を書き込めないセルかどうか、型をチェックしてMergedCell型ならその処理を飛ばす
|
2
些細
answer
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
ここで"B1のセルの値を書き換える"というコードが実行された時、そのコードを書いた人の意思が"A1セルの値を変えたかった"のか"B1セルの値を**誤って**変えようとした"のか、**あいまいなので**フェイルセーフとしてエラーを返すのは自然な設計だと思います。
|
8
8
|
|
9
9
|
コードが**読めません**ので質問者さんがどういうつもりでコードを書いたのか分かりません。
|
10
|
-
結合されて値を書き込めないセルかどうか
|
10
|
+
結合されて値を書き込めないセルかどうか、型をチェックしてMergedCell型ならその処理を飛ばす
|
11
11
|
とか
|
12
12
|
セルが結合されている事実の方が意図していないことなのでExcelシートを直す
|
13
13
|
とか
|
1
間違い
answer
CHANGED
@@ -7,8 +7,8 @@
|
|
7
7
|
ここで"B1のセルの値を書き換える"というコードが実行された時、そのコードを書いた人の意思が"A1セルの値を変えたかった"のか"B1セルの値を**誤って**変えようとした"のか、**あいまいなので**フェイルセーフとしてエラーを返すのは自然な設計だと思います。
|
8
8
|
|
9
9
|
コードが**読めません**ので質問者さんがどういうつもりでコードを書いたのか分かりません。
|
10
|
-
結合されて値を書き込めないセルかどうかを、型
|
10
|
+
結合されて値を書き込めないセルかどうかを、型をチェックしてMergedCell型ならその処理を飛ばす
|
11
11
|
とか
|
12
|
-
|
12
|
+
セルが結合されている事実の方が意図していないことなのでExcelシートを直す
|
13
13
|
とか
|
14
14
|
そういったことになるかと思いますが。
|