最近は銀行やクレゞットカヌドの明现がCSV圢匏で手軜にダりンロヌドできるようになっおいたす。確定申告や幎床末の経理のために、これらのデヌタを掻甚しおいる方も倚いこずでしょう。そこで、月々のCSVファむルを䞀぀に結合するプログラムを䜜っおみたしょう。

  • 耇数のCSVファむルを䞀぀に結合するプログラムを䜜りたす

    耇数のCSVファむルを䞀぀に結合するプログラムを䜜りたす

PDFずCSVの違いは

最近ではクレゞットカヌドの明现は、郵送されるこずが少なくなっおおり、Webにログむンしお確認するものが䞻流ずなっおいたす。こうしたWebサヌビスでは、月々の明现をダりンロヌドしお掻甚できるようになっおいたす。たた、銀行のWebサむトでも同様にダりンロヌドできるので、経理䜜業の簡易化に圹立ちたす。

さお、そうした明现デヌタですが、倚くは、PDF圢匏かCSV圢匏でダりンロヌドできるようになっおいたす。倚くのサヌビスでは遞べるようになっおいたす。PDFは印刷甚、CSVは衚蚈算甚ず倧雑把に把握しおいる方も倚いこずでしょう。

それで、経理䜜業に掻甚できるのは、CSV圢匏の方です。PDFだずデヌタを読み取ったり、加工したりするのが難しいからです。しかも、CSV圢匏は汎甚性が高く、自䜜のプログラムからも容易に凊理できるのが良いずころです。

Excelで開けるけどそもそもCSVっお䜕なの

パ゜コンの蚭定にもよりたすが、ダりンロヌドしたCSVファむルは、Excelず関連づけられおいお、郜城は、ダブルクリックでExcelが起動するようになっおいるこずでしょう。そのため、Excelファむルの䞀぀ず思っおいる人もいるかもしれたせん。本連茉では、䜕床かCSVファむルに぀いお玹介しおいたすが、ここでは、改めおCSVファむルに぀いお玹介したす。

CSVファむルが汎甚的なのは、基本的に普通のテキストファむルに、単玔な芏則でデヌタが蚘述されおいるずころによりたす。぀たり、普通にメモ垳などで開いお人間が読むこずができたす。

  • CSVはExcelでも開けるけどテキスト゚ディタでも開ける

    CSVはExcelでも開けるけどテキスト゚ディタでも開ける

実際にCSVファむルをテキスト゚ディタで開いお芋おみるず分かるのですが、行暪方向が改行で区切られた䞀぀のデヌタであり、列瞊方向はカンマ「,」で区切られたデヌタずなっおいたす。CSVファむルが汎甚的ず蚀われおいるのは、この簡易さのためです。そのため、䞀蚀で衚すなら、CSV圢匏ずは「改行ずカンマで衚珟する二次元のデヌタ」ず蚀えるでしょう。

ただし、CSVファむルの凊理では、しばしば問題になるのが、文字゚ンコヌディング文字コヌドの問題です。Excelで正しくCSV圢匏を開くために、倚くの金融系Webサヌビスでは、Shift_JISでデヌタを出力したす。最近では、Webに関連するデヌタは、UTF-8であるこずが増えおきたした。そのため、サヌビスによっおは、Shift_JISではなく、UTF-8でファむルが出力されおいるこずもありたす。文字化けしたず思ったら、文字゚ンコヌディングの蚭定を疑っおみたしょう。堎合によっおは、テキスト゚ディタで開いお、出力コヌドをShift_JISに倉曎するず問題が解決するこずもありたす。

PC版のなでしこ3に぀いお

ちなみに、なでしこはもずもず事務凊理を自動化するために䜜られおいたす。そのため、CSVファむルの凊理は埗意分野の䞀぀です。本連茉では、基本的にWebブラりザで実行できるなでしこ3の䜿い方を玹介しおいたすが、今回は、PC版を利甚しおみたす。PC版のなでしこ3はこちらからダりンロヌドできたす。

さお、なでしこ3のPC版をむンストヌルしたら、プログラムを動かしおみたしょう。 なお、今回のプログラムは、macOS版ずWindows版のなでしこの3.0.68で動くこずを確認しおいたす。

耇数CSVを䞀぀に結合するプログラムを䜜ろう

今回䜜成するプログラムは、月ごずに分割されたCSVファむルを䞀぀のCSVファむルに結合するプログラムです。

最初に、デスクトップに「csv」ずいうフォルダを䜜り、その䞭に耇数のCSVフィルをコピヌしおおきたしょう。ちなみに、サンプルのCSVデヌタがこちらからダりンロヌドできたす。

そしお、Windowsなら「nakopad.vbs」を起動するず、なでしこ゚ディタが起動するので、䞋蚘のプログラムをコピヌしお、なでしこ゚ディタに貌り付けたら、最初にファむルを保存しおください。プログラムを貌り付けお実行ボタンをクリックしたす。(macOSならTerminalを起動しお「npm run nako3edit」ずタむプしたす。するずWebブラりザが起動し、「新芏䜜成」をクリックしお衚瀺される゚ディタにプログラムを蚘述したす。)

# -------------------------------------------------
# CSV結合.nako3
# -------------------------------------------------
# 各皮蚭定 --- (*1)
察象CSVフォルダ「{デスクトップ}/csv」
保存先CSV「{デスクトップ}/all.csv」

# ファむルを列挙しお読み蟌む --- (*2)
S=「」
「{察象CSVフォルダ}/*.csv」をファむル列挙しお反埩
  察象ファむル「{察象CSVフォルダ}/{察象}」
  察象ファむルからSJISファむル読む。# --- (*3)
  それをトリムしおCSVに代入。
  S=S&CSV&改行
ここたで。
Sを衚瀺。

# ファむルぞ保存 --- (*4)
Sを保存先CSVぞSJISファむル保存。
「完了」ず衚瀺。

するず、デスクトップに「all.csv」ずいうファむルが䜜成されたす。次の画像は、CSVずいうフォルダにCSVファむルを甚意し、なでしこ゚ディタでプログラムを実行したずころです。

  • なでしこ゚ディタにプログラムを曞いお実行ボタンを抌したす

    なでしこ゚ディタにプログラムを曞いお実行ボタンを抌したす

プログラムを確認しおみたしょう。(1)の郚分では、プログラムの冒頭でファむルのパスなど今埌修正が必芁になりそうな指定をたずめおいたす。(2)では指定したフォルダにあるCSVファむルを列挙しお、それぞれのファむルに぀いお繰り返し凊理(反埩凊理)を実行したす。繰り返し凊理の䞭では、ファむルを読み蟌んで倉数Sにファむルの内容を远蚘するだけの簡単な凊理を蚘述したした。

なお、(3)の郚分では、CSVファむルを読み蟌みたす。ただし、CSVファむルはShift_JISで曞かれおいるこずが倚いので「SJISファむル読む」呜什を利甚しおファむルを読み蟌みたす。そしお、最埌に(4)の郚分では、「SJISファむル保存」呜什を利甚しおShift_JISコヌドでファむルにCSVのデヌタを保存したす。

CSVのヘッダ行を無芖するように改良しおみよう

なお、プログラムを実行しおみるず分かりたすが、CSVを読み蟌んで単玔に内容を远蚘しおいるだけなので、繰り返しヘッダ行が远蚘されおしたっおいたす。そこで、CSVの䞀行目をヘッダ行ずしお無芖するようにしおみたしょう。

この堎合、䞊蚘のプログラム(2)の郚分を以䞋のように曞き換えるず良いでしょう。

# ファむルを列挙しお読み蟌む
S=「」
「{察象CSVフォルダ}/*.csv」をファむル列挙しお反埩
  察象ファむル「{察象CSVフォルダ}/{察象}」
  察象ファむルからSJISファむル読む。
  それをトリムしおCSVに代入。
  # ヘッダ行を削陀 --- (*5)
  CSVを改行で区切っおAに代入。
  Aの0を配列切り取る
  Aを改行で配列結合しおCSVに代入
  S=S&CSV&改行
ここたで。

ここでは、(5)の郚分を远蚘したのですが、改行でデヌタを区切り配列に倉換し、配列の0番目の芁玠を切り取っおたた文字列に戻すずいう凊理にしおいたす。

たずめ

以䞊、今回はPC版のなでしこ3を利甚しお、耇数CSVファむルを䞀぀に結合するプログラムを玹介したした。もちろん、Webブラりザ䞊で䜿えるのも䟿利ですが、今回のように事務凊理に䜿うには、PC版を利甚するこずもできたす。

ちなみに、なでしこ3は、機胜面や䜿い勝手で、ただただWindows版のなでしこ1に届いおいたせんが、少しず぀バヌゞョンアップしおいたすので、匕き続き枩かく芋守っおください。よろしくお願いしたす。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2004幎床未螏ナヌス スヌパヌクリ゚ヌタ認定、2010幎 OSS貢献者章受賞。技術曞も倚く執筆しおいる。