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

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

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

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

Q&A

解決済

2回答

1696閲覧

Excel出力時に数字のE+表示を回避する方法

abide

総合スコア5

Python

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

0グッド

0クリップ

投稿2021/08/06 02:06

編集2021/08/06 05:51

諸々加工を行った最後にExcelに出力する処理を作成しているのですが、
一つのカラムに桁数の多い数字を扱っているため、Excelに出力すると5.81E+09のように表示されてしまいます。

文字列に置き換えてすべて数字が見える状態で出力したいのですが、どうしたらよいでしょうか?

やったこととしては、出力前の段階で該当カラムを文字列に置換しようとしましたが、下記の通りうまくいきませんでした。

※サンプルなので桁数を短くして記載していますが、sample['ID']を文字列置換しようとしています。

sample
ID Name Date
01 Yamada 2020-01-01
02 Mizuno 2020-01-01
03 Kawata 2020-01-01
04 Tanaka 2020-01-01

現状sample['ID']の型はobject型です。
トライしたことは以下になりますが、エラーは起きずピンク色のワーニングで出てしまい、
型を確認するとobject型のままになっています。

sample['ID'] = sample['ID'].astype(str) sample['ID'] = str(sample['ID']) #型確認 print(sample['ID'].head()) #エラー内容 A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead

特定カラムのみ置換する方法以外でも、Excel出力時に桁数の多い数字がE+で表示されなくなる方法がそちらでも構いませんのでご教示いただけると幸いです。

補足:

sample.to_excel('C:\Users\notebook\sample.xlsx', encodint='Shift-JIS')
samplebook = openpyxl.load_workbook('sample.xlsx')
sheet = ['Sheet1']
sheet.cell(column=1).number_format = openpyxl.styles.numbers.FORMAT_TEXT
samplebook.save('C:\Users\notebook\sample.xlsx')

上記の通り、Excel出力後にExcelの表示形式を変更して保存してみましたが下記のエラーが出てしまいます。

AttributeError: 'list' object has no attribute 'cell'

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

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

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

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

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

guest

回答2

0

ベストアンサー

以下を参考にしてください。

python

1>>> print(sample) 2 ID Name Date 30 5810000001 Yamada 2020-01-01 41 5810000002 Mizuno 2020-01-01 52 5810000003 Kawata 2020-01-01 63 5810000004 Tanaka 2020-01-01 7>>> sample.to_excel('sample.xlsx', encoding='Shift-JIS') 8>>> samplebook = openpyxl.load_workbook('sample.xlsx') 9>>> ws = samplebook.worksheets[0] 10>>> for row in ws['B2:B5']: 11... for cell in row: 12... cell.number_format = '0' 13... 14>>> ws.column_dimensions['B'].width = 15 15>>> samplebook.save('sample2.xlsx')

結果のsample2.xlsxの画像は以下です。

sample2.xlsx

投稿2021/08/06 13:03

ppaul

総合スコア24666

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

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

abide

2021/08/17 03:59

お礼が遅くなり申し訳ございません!教えていただいた方法で解決できました、いつもわかりやすい説明をありがとうございます!
guest

0

こちらなどはいかがでしょうか
参考リンク

投稿2021/08/06 02:29

編集2021/08/06 02:29
mamemaru

総合スコア56

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

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

abide

2021/08/06 04:47

ご回答ありがとうございます。申し訳ございませんが、Excelの設定をハンド修正せずに表示を変える方法を探しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問