表題のとおり。Excelファイル内の半角をすべて全角にする。住所録とかで、全角を指定されたり、とか。そういう時。人とやりとりしていると、Excelファイルは避けて通れないもので……。
Excelなのだから、Excel VBAでやるのが正道なのかもしれないけれど……わざわざ覚えるのもなー……ということで、python。便利なライブラリを開発してくれている方のおかげで、大して覚えることもなく。有難い。
目次
やること
Excelファイルで、半角の文字をすべて全角に変換する。pythonでやる。
xlrdで読み込み、読み込んだデータに大してmojimojiを使って半角→全角変換、xlsxwriterを利用して書き込み。xlsxwriterは新しくExcelファイルを作ることになる。pipでインストールしておく。
pip install xlrd xlsxwriter mojimoji
ソースコード
以下のプログラムで、before.xlsxを読み込んで、処理したものをafter.xlsxとして出力する。このプログラムだと装飾についてはコピーできない。after.xlsxの中身をコピーして、before.xlsxに形式合わせてペーストするのが一番楽かなと思う。セル内の一部分だけアンダーバーを引く、というような細かな装飾についてはどうしようもないが。そこまでやるならExcel VBAか。
import xlrd
import xlsxwriter
import mojimoji
def han2zen(val):
if type(val) is not str:
val = str(val)
val = mojimoji.han_to_zen(val)
return val
def main():
orig_book = xlrd.open_workbook('before.xlsx')
orig_sheet = orig_book.sheet_by_index(1)
write_book = xlsxwriter.Workbook('after.xlsx')
write_sheet = write_book.add_worksheet()
for row in range(orig_sheet.nrows):
for col in range(orig_sheet.ncols):
cell = han2zen(orig_sheet.cell(row,col).value)
write_sheet.write(row,col,cell)
write_book.close()
if __name__ == '__main__':
main()
以上。

コメント