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

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回答

2566閲覧

openpyxlにてセルにシングルクォーテーション+文字を書き込んだ場合、そのまま書き込まれてしまう。

jazzmaster

総合スコア26

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/05/21 01:43

編集2021/05/21 02:25

python

1y = "'" + str(aaa_count) + '-' + str(sss_count) + ' ' 2sheet4.cell(row=1 + r, column=1).value = y

上記のようなコードでセルにシングルクォーテーション+文字を書き込んだ場合、
そのまま表示されてしまいます。

イメージ説明

シングルクォートが入った状態で下記画像のように書き込みたいのですが、
ご教授いただけないでしょうか。よろしくお願いいたします。

イメージ説明

#追記
その他の理由として、
シングルクォーテーションなしで書き込んだ場合、
「2桁年を使用した日付文字列」と判断されてしまうのかエラーが出てしまいます。
そのエラーを消したいために先頭にシングルクォーテーションを挿入した背景がございます。

イメージ説明

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

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

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

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

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

quickquip

2021/05/21 04:00

処理は、既存のxlsxファイルを開いて編集して保存し直す形ですか? 新しくWorkbookを作った場合だとこうはならないんじゃないかと思います。 例えば print(sheet4.cell(row=??, column=1).style) print(sheet4.cell(row=??, column=1)._style) の結果を質問に追記したりはできますか? (どこか1箇所でいいので ?? と表記しました)
jazzmaster

2021/05/24 03:57

お返事遅れまして申し訳ないです。ご依頼のprintは対象箇所に挿入しましたが何も表示されませんでした。
guest

回答1

0

シングルクォートが入った状態で下記画像のように書き込みたい

これはできません。

理由は、エクセルで入力したときの"'"はデータではないからです。
先頭の「'」(シングルコーテーション)を削除する をお読みください。

なぜ、シングルクォートが入った状態で書き込みたいのかの理由が、別のところから取ってきた文字列の先頭がシングルクォーテーションであるという問題であれば

python

1>>> y = "'16-1" 2>>> print(y[1:]) 316-1

を使って、先頭のシングルクォーテーションを削除してから

python

1sheet4.cell(row=1 + r, column=1).value = y[1:]

とすれば期待通りの結果になります。

その他の理由でしたら、その理由を質問欄に追加して下さい。

シングルクォーテーションなしで書き込んだ場合、
「2桁年を使用した日付文字列」と判断されてしまうのかエラーが出てしまいます。

とのことですが、エラーではなく警告ですね。
エクセルで別のセルに「'16-1」を入力しても同じ警告が出るので、シングルクォーテーションは問題の解決にはならないと思います。
エクセルの方で書式設定を文字列にしてみましたがそれでも同じ警告が出ました。

姑息な手段ですが" 16-1"というように全角空白で始まる文字列だと、あまり見映えが変わりませんし、日付文字列と解釈されることはありませんでした。

投稿2021/05/21 02:05

編集2021/05/21 03:21
ppaul

総合スコア24670

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

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

jazzmaster

2021/05/21 02:25

回答ありがとうございます。その他の理由を追記として記載させていただきました。
jazzmaster

2021/05/21 03:55

codeの部分で記載したのですが、最後に + ' ' でスペースを入れることでエクセル上では解決できることは分かっておりました。
ppaul

2021/05/21 05:07

そちらの方が見た目も良いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問