(57)【特許請求の範囲】
【請求項１】
コンピュータに、
上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択し、
選択した前記何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定し、
特定した前記第１の入力領域から前記一方の方向に登場する一又は複数の未入力の入力領域から、上方向および左方向の内、前記一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定し、
前記一方の方向が上方向である場合、前記第２の入力領域から、下方向に辿って登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定し、
左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合には、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶し、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合には、前記第２の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けずに、前記第１の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
処理を実行させることを特徴とするデータ処理プログラム。
【請求項２】
前記コンピュータに、
前記一方の方向が上方向である場合、前記第２の入力領域から左方向または右方向に登場する文字列が入力された入力領域から下方向に登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する、処理を実行させ、
前記記憶する処理は、
左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合に、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする請求項１に記載のデータ処理プログラム。
【請求項３】
前記コンピュータに、
前記一方の方向が左方向である場合、前記第２の入力領域から右方向に辿って登場する未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する、処理を実行させ、
前記記憶する処理は、
上方向、下方向、および右方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合に、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする請求項１または２に記載のデータ処理プログラム。
【請求項４】
前記コンピュータに、
前記一方の方向が左方向である場合、前記第２の入力領域から上方向または下方向に登場する文字列が入力された入力領域から右方向に登場する未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する、処理を実行させ、
前記記憶する処理は、
上方向、下方向、および右方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合に、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする請求項１〜３のいずれか一つに記載のデータ処理プログラム。
【請求項５】
前記コンピュータに、
前記複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定し、
特定した前記第１の区画から前記一方の方向に、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第２の区画が出現するか否かを判定し、
前記第２の区画が出現すると判定した場合に、前記第１の区画の何れかの入力領域から前記一方の方向に辿って出現する、前記第２の区画の何れかの入力領域に入力されたデータに対応付けて記憶された文字列を、前記第１の区画の何れかの入力領域に入力されたデータに対応付けて記憶する、処理を実行させる、
ことを特徴とする請求項１〜４のいずれか一つに記載のデータ処理プログラム。
【請求項６】
前記コンピュータに、
前記複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定し、
特定した前記第１の区画から前記一方の方向に、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第２の区画が出現するか否かを判定する、処理を実行させ、
前記選択する処理は、
前記第２の区画が出現すると判定した場合に、前記第１の区画の何れかの入力領域を選択し、
前記特定する処理は、
前記第２の区画から前記一方の方向に配置された複数の入力領域、および前記第２の区画から前記一方の方向に配置された複数の入力領域から前記一方の方向に直交する方向に配置された複数の入力領域の内、選択した前記何れかの入力領域から、前記一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定する、
ことを特徴とする請求項１〜４のいずれか一つに記載のデータ処理プログラム。
【請求項７】
コンピュータが、
上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択し、
選択した前記何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定し、
特定した前記第１の入力領域から前記一方の方向に登場する一又は複数の未入力の入力領域から、上方向および左方向の内、前記一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定し、
前記一方の方向が上方向である場合、前記第２の入力領域から、下方向に辿って登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定し、
左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合には、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶し、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合には、前記第２の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けずに、前記第１の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
処理を実行することを特徴とするデータ処理方法。
【請求項８】
上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択し、
選択した前記何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定し、
特定した前記第１の入力領域から前記一方の方向に登場する一又は複数の未入力の入力領域から、上方向および左方向の内、前記一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定し、
前記一方の方向が上方向である場合、前記第２の入力領域から、下方向に辿って登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定し、
左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合には、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶し、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合には、前記第２の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けずに、前記第１の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
制御部を有することを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理プログラム、データ処理方法、およびデータ処理装置に関する。
【背景技術】
【０００２】
従来、上下方向および左右方向に並べて配置された複数の入力領域のいくつかの入力領域に、項目名や、項目名に対応する数値などが入力され、表が作成される場合がある。関連する技術としては、例えば、スプレッドシートを用いた業務をウェブアプリケーションに移行する際の、ユーザ作業量を効果的に抑制するためのものがある。また、例えば、どのような形式の帳票であってもその論理構造認識を高精度に実現するための技術がある。また、例えば、表形式データ中の必要なデータの抽出を自動で行うための技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−７４９４７号公報
【特許文献２】特開２００９−１１０４１６号公報
【特許文献３】特開２０１１−２５３４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、何れかの入力領域に入力された数値などのデータが、どの項目名に対応するデータであるかを自動で判断することが難しい場合がある。例えば、人手で表を作成する場合には、あるデータに対応する階層化された項目名の一部が省略されることがあり、あるデータに対応する項目名を特定することが難しい場合がある。
【０００５】
１つの側面では、本発明は、入力されたデータに項目名を対応付けることができるデータ処理プログラム、データ処理方法、およびデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択し、選択した前記何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定し、特定した前記第１の入力領域から前記一方の方向に登場する一又は複数の未入力の入力領域から、上方向および左方向の内、前記一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定し、前記第１の入力領域に入力された文字列と、特定した前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶するデータ処理プログラム、データ処理方法、およびデータ処理装置が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、入力されたデータに項目名を対応付けることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態にかかるデータ処理方法の一実施例である。
【図２】図２は、データ処理装置１００のハードウェアの一例を示すブロック図である。
【図３】図３は、データ処理装置１００の機能的構成例を示すブロック図である。
【図４】図４は、データ処理装置１００の実施例１を示す説明図（その１）である。
【図５】図５は、データ処理装置１００の実施例１を示す説明図（その２）である。
【図６】図６は、データ処理装置１００の実施例１を示す説明図（その３）である。
【図７】図７は、データ処理装置１００の実施例１を示す説明図（その４）である。
【図８】図８は、データ処理装置１００の実施例１を示す説明図（その５）である。
【図９】図９は、データ処理装置１００の実施例１を示す説明図（その６）である。
【図１０】図１０は、データ処理装置１００の実施例１を示す説明図（その７）である。
【図１１】図１１は、データ処理装置１００の実施例１を示す説明図（その８）である。
【図１２】図１２は、対応付け処理手順の一例を示すフローチャートである。
【図１３】図１３は、項目名（列）抽出処理手順の一例を示すフローチャート（その１）である。
【図１４】図１４は、項目名（列）抽出処理手順の一例を示すフローチャート（その２）である。
【図１５】図１５は、データ処理装置１００の実施例２を示す説明図（その１）である。
【図１６】図１６は、データ処理装置１００の実施例２を示す説明図（その２）である。
【図１７】図１７は、共有項目名（列）抽出処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に、図面を参照して、本発明にかかるデータ処理プログラム、データ処理方法、およびデータ処理装置の実施の形態を詳細に説明する。
【００１０】
（実施の形態にかかるデータ処理方法の一実施例）
図１は、実施の形態にかかるデータ処理方法の一実施例である。図１において、データ処理装置１００は、表を形成する上下方向および左右方向に矩形状に並べて配置された複数の入力領域を有し、複数の入力領域のそれぞれにデータが入力されたファイルを取得するコンピュータである。以下の説明では、入力領域を「セルＣ」と表記する場合がある。また、表を形成する複数のセルＣの内、ｎ行ｍ列目に配置されたセルＣを、「セルＣ（ｎ，ｍ）」と表記する場合がある。
【００１１】
表を形成する複数のセルＣは、ファイルにおいて区切り文字によって区切られる。表を形成する複数のセルＣは、表の要素になるデータが入力されるセルＣと、表の要素の種類を示すデータが入力されるセルＣとを含む。表の要素になるデータは、例えば、数値である。表の要素になるデータは、例えば、数値がないことを示す記号であってもよい。表の要素の種類を示すデータは、例えば、項目名になる文字列である。項目名は、例えば、表の要素の属性を示し、表の要素を特徴付ける。
【００１２】
以下の説明では、表の要素になる数値が入力された複数のセルＣが、上下方向および左右方向に並べて配置された区画を、「数値部」と表記する場合がある。以下の説明では、表の要素の種類を示す項目名が入力された複数のセルＣが、上下方向および左右方向に並べて配置された区画を、「項目名部」と表記する場合がある。
【００１３】
項目名部は、例えば、表の内、少なくとも数値部の上方向、または左方向に配置される。表の要素の種類は、階層構造の項目名によって示される場合がある。具体的には、表の要素の種類は、第１階層の項目名が示す種類の内、第１階層の下位にある第２階層の項目名が示す種類として示される場合がある。この場合、項目名部において、階層構造の項目名の内、階層ごとの項目名が、階層ごとに対応するセルＣに入力される。具体的には、表の要素が入力されたセルＣと同一の列にある、上下方向に並んで配置された項目部の複数のセルＣの内、最も上方向にあるセルＣから順に、最上位階層の項目名から下位にある階層の項目名までが１つずつ入力される。
【００１４】
ここで、演算装置が、予め、項目名になる可能性がある文字列を記憶しておき、ファイルのそれぞれのセルＣに入力された文字列から項目名になる可能性がある文字列を検索して、ファイルの何れかのセルＣに入力された項目名を特定する場合が考えられる。しかしながら、演算装置は、ファイルの何れかのセルＣに入力される項目名になる可能性がある文字列を予測することが難しい場合には、予め項目名になる可能性がある文字列を記憶しておくことができず、項目名を特定することができない。
【００１５】
また、項目名部において、同一の項目名が入力される同一の階層の複数のセルＣの内、何れかのセルＣに項目名が入力された場合には、残余のセルＣのそれぞれについて項目名の入力が省略される場合が考えられる。例えば、同一の項目名の入力先となる左右方向に隣接する２つのセルＣの内、左側のセルＣに項目名が入力され、右側のセルＣについて項目名の入力が省略される場合が考えられる。しかしながら、演算装置が、項目名の入力が省略されたセルＣから、項目名を特定することが難しいことがある。
【００１６】
また、演算装置が、予め、数値に対応する項目名が特定済みの学習用のファイル群を用いて、新たなファイルの何れかのセルＣに入力された項目名を特定する規則を自動学習する場合が考えられる。しかしながら、学習用のファイル群を用意するため、演算装置の利用者の作業負担が増大してしまう。また、演算装置が、学習用のファイル群から、項目名を特定する規則を学習する際に、時間がかかってしまう。また、演算装置は、学習用のファイル群が適当でなければ、新たなファイルの何れかのセルＣに入力された項目名を特定することができない。そこで、本実施の形態では、データに階層化された項目名を対応付けることができるデータ処理方法について説明する。
【００１７】
図１の例では、区画ＡにあるセルＣは、上方向または左方向にあるセルＣに入力された項目名と同一の項目名が入力されるセルＣであるため、項目名の入力が省略されている。また、区画ＢにあるセルＣは、対応する階層がないため、項目名が入力されない。以下では、説明の簡略化のため、文字列が入力されたセルＣが１つもない行を省略して、実施の形態にかかるデータ処理方法について説明する。
【００１８】
（１）データ処理装置１００は、表を形成する複数のセルＣの内、表の要素になるデータが入力されたセルＣの何れかのセルＣを選択する。データ処理装置１００は、例えば、表を形成する複数のセルＣの内、数値「４３９，１４８」が入力されたセルＣ（１０，４）を選択する。
【００１９】
（２）データ処理装置１００は、選択した何れかのセルＣから、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、項目名になりうる文字列が入力された第１のセルＣを特定する。データ処理装置１００は、例えば、選択したセルＣ（１０，４）から、上方向に辿って最初に登場する、文字列が入力された第１のセルＣ（７，４）を特定する。
【００２０】
（３）データ処理装置１００は、特定した第１のセルＣから一方の方向に登場する未入力のセルＣから、上方向および左方向の内、一方の方向とは異なる他方の方向に辿って最初に登場する、項目名になりうる文字列が入力された第２のセルＣを特定する。データ処理装置１００は、例えば、特定した第１のセルＣ（７，４）から上方向に登場する未入力のセルＣ（５，４）から、左方向に辿って最初に登場する、文字列が入力されたセルＣ（５，３）を特定する。
【００２１】
データ処理装置１００は、具体的には、予め、未入力のセルＣを、１つ左方向にあるセルＣの文字列で補完しておく。そして、データ処理装置１００は、特定した第１のセルＣ（７，４）から上方向に登場する未入力のセルＣ（５，４）に補完された、未入力のセルＣ（５，４）から左方向に辿って最初に登場するセルＣ（５，３）に入力された文字列を特定してもよい。
【００２２】
データ処理装置１００は、（２）において特定した第１のセルＣに入力された文字列と、（３）において特定した第２のセルＣに入力された文字列とを、（１）において選択したセルＣに入力されたデータに対応付けて記憶する。データ処理装置１００は、例えば、セルＣ（７，４）に入力された文字列「定員」と、セルＣ（５，３）に入力された文字列「タイプＡ施設」とを連結する。そして、データ処理装置１００は、連結した文字列「タイプＡ施設／定員」を、列方向の項目名として、セルＣ（１０，４）に入力された数値「４３９，１４８」に対応付けて記憶する。
【００２３】
また、データ処理装置１００は、（２）において上方向ではなく左方向に辿って第１のセルＣを特定してもよい。そして、データ処理装置１００は、例えば、（３）と（４）と同様にして、行方向の項目名を、セルＣ（１０，４）に入力された数値「４３９，１４８」に対応付けて記憶してもよい。
【００２４】
これにより、データ処理装置１００は、予め、項目名になる可能性がある文字列を予測することが難しい場合であっても、セルＣの数値に項目名を対応付けることができる。また、データ処理装置１００は、項目名が階層構造であって、セルＣに対する項目名の入力が省略される場合であっても、セルＣの数値に項目名を対応付けることができる。また、データ処理装置１００は、予め、学習用のファイル群を用いて、新たなファイルの何れかのセルＣに入力された項目名を特定する規則を自動学習しておかなくても、セルＣの数値に項目名を対応付けることができる。
【００２５】
また、データ処理装置１００は、セルＣに対する項目名の入力が省略される場合であっても、何れかのセルＣに入力された数値に対応する、階層化された項目名を精度よく特定することができる。このように、データ処理装置１００は、セルＣの数値に項目名を対応付ける精度を向上させると共に、データ処理装置１００の利用者の作業量を低減することができる。結果として、データ処理装置１００は、セルＣに入力された数値に対応付けられた項目名に基づいて、セルＣに入力された数値についての統計処理などを行うことができるようになる。
【００２６】
（データ処理装置１００のハードウェア）
次に、図２を用いて、図１に示したデータ処理装置１００のハードウェアの一例について説明する。
【００２７】
図２は、データ処理装置１００のハードウェアの一例を示すブロック図である。図２において、データ処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を有する。また、データ処理装置１００は、さらに、ディスクドライブ２０４と、ディスク２０５と、インターフェース（Ｉ／Ｆ：Ｉｎｔｅｒｆａｃｅ）２０６と、入力装置２０７と、出力装置２０８とを有する。
【００２８】
また、ＣＰＵ２０１と、ＲＯＭ２０２と、ＲＡＭ２０３と、ディスクドライブ２０４と、Ｉ／Ｆ２０６と、入力装置２０７と、出力装置２０８とは、バス２００によってそれぞれ接続される。データ処理装置１００は、例えば、サーバ、ノート型パソコン、デスクトップ型パソコンなどである。
【００２９】
ここで、ＣＰＵ２０１は、データ処理装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどの各種プログラムを記憶する。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。また、ＲＡＭ２０３は、各種プログラムの実行により得られたデータなどの各種データを記憶する。
【００３０】
ディスクドライブ２０４は、ＣＰＵ２０１の制御に従ってディスク２０５に対するデータのリードおよびライトを制御する。ディスク２０５は、ディスクドライブ２０４の制御で書き込まれたデータを記憶する。ディスク２０５は、例えば、磁気ディスク、または光ディスクなどである。
【００３１】
Ｉ／Ｆ２０６は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他の装置に接続される。そして、Ｉ／Ｆ２０６は、ネットワーク２１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０６には、例えば、モデムやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）アダプタなどを採用することができる。
【００３２】
入力装置２０７は、キーボード、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェースである。入力装置２０７は、マウス、スキャナなどであってもよい。出力装置２０８は、ＣＰＵ２０１の指示により、データを出力するインターフェースである。出力装置２０８は、例えば、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示するディスプレイである。出力装置２０８は、プリンタであってもよい。
【００３３】
データ処理装置１００は、入力装置２０７や出力装置２０８の少なくともいずれかを有していなくてもよい。データ処理装置１００は、さらに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と半導体メモリとを有していてもよい。データ処理装置１００は、ディスクドライブ２０４とディスク２０５との代わりに、ＳＳＤと半導体メモリとを有していてもよい。
【００３４】
（データ処理装置１００の機能的構成例）
次に、図３を用いて、データ処理装置１００の機能的構成例について説明する。
【００３５】
図３は、データ処理装置１００の機能的構成例を示すブロック図である。データ処理装置１００は、制御部となる機能として、取得部３０１と、第１の特定部３０２と、選択部３０３と、第２の特定部３０４と、判定部３０５と、記憶部３０６とを含む。データ処理装置１００は、制御部によって、第１の動作例、第２の動作例、第３の動作例を実行することができる。
【００３６】
第１の動作例は、表を形成する複数のセルＣの内、何れかの数値部に対応する項目部が省略されていない場合に、セルＣに入力された数値に項目名を対応付ける動作例である。第２の動作例、および第３の動作例は、表を形成する複数のセルＣの内、何れかの数値部に対応する項目部が省略されている場合に、セルＣに入力された数値に項目名を対応付ける動作例である。
【００３７】
＜第１の動作例＞
まず、第１の動作例について説明する。第１の動作例は、取得部３０１と、第１の特定部３０２と、選択部３０３と、第２の特定部３０４と、判定部３０５と、記憶部３０６とによって、実現される。
【００３８】
取得部３０１は、表を形成する上下方向および左右方向に矩形状に並べて配置された複数の入力領域を有し、複数の入力領域のそれぞれにデータが入力されたファイルを取得する。入力領域は、例えば、セルＣである。取得部３０１は、例えば、表計算ソフトウェアのフォーマットにしたがって生成されたファイルを取得する。取得部３０１は、具体的には、Ｉ／Ｆ２０６により、他の装置からファイルを受信することにより、ファイルを取得する。これにより、取得部３０１は、項目名を特定する対象になる、ファイルを取得することができる。
【００３９】
取得部３０１は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０６により、その機能を実現する。取得したファイルは、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００４０】
第１の特定部３０２は、複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定する。データとは、表の要素である。データは、例えば、数値である。第１の区画は、例えば、表内の数値部である。第１の特定部３０２は、例えば、表を形成する複数のセルＣの内、数値が入力されたセルＣ、および数値がないことを示す記号「−」が入力されたセルＣなどが上下方向および左右方向に並べて配置された、数値部を特定する。これにより、第１の特定部３０２は、項目名を対応付ける対象になる数値が入力された複数のセルＣが配置された数値部を特定することができる。
【００４１】
第１の特定部３０２は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０６により、その機能を実現する。特定結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００４２】
選択部３０３は、上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択する。選択部３０３は、例えば、第１の特定部３０２が特定した第１の区画のそれぞれの入力領域を選択する。選択部３０３は、具体的には、数値部の何れかのセルＣを選択する。これにより、選択部３０３は、項目名を対応付ける対象になる数値が入力されたセルＣを選択することができる。
【００４３】
選択部３０３は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。選択結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００４４】
第２の特定部３０４は、選択部３０３が選択した何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定する。第２の特定部３０４は、例えば、選択部３０３が選択した何れかのセルＣから、上方向に辿って最初に登場する、項目名になりうる文字列が入力された第１のセルＣを特定する。第２の特定部３０４は、具体的には、選択部３０３が選択した何れかのセルＣから、上方向に辿って最初に登場する、項目名になりうる文字列が入力された第１のセルＣに入力された文字列を特定してもよい。これにより、第２の特定部３０４は、選択部３０３が選択したセルＣに入力された数値に対応する階層構造の項目名の内、最下層の項目名が入力されたセルＣを特定することができる。
【００４５】
第２の特定部３０４は、特定した第１の入力領域から一方の方向に登場する未入力の入力領域から、上方向および左方向の内、一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定する。第２の特定部３０４は、例えば、特定した第１のセルＣから上方向に登場する未入力のセルＣから、左方向に辿って最初に登場する、文字列が入力されたセルＣを特定する。第２の特定部３０４は、具体的には、予め、未入力のセルＣを、１つ左方向にあるセルＣの文字列で補完しておいてもよい。そして、第２の特定部３０４は、特定した第１のセルＣから上方向に登場する未入力のセルＣに補完された、未入力のセルＣから左方向に辿って最初に登場する第２のセルＣに入力された文字列を特定してもよい。これにより、第２の特定部３０４は、選択部３０３が選択したセルＣに入力された数値に対応する階層構造の項目名の内、最下層の項目名よりも上位にある階層の項目名が入力されたセルＣを特定することができる。
【００４６】
第２の特定部３０４は、第１の入力領域から一方の方向に登場する、文字列が入力された第３の入力領域を特定する。第２の特定部３０４は、例えば、特定した第１のセルＣから上方向に登場する、項目名となる文字列が入力された第３のセルＣを特定する。第２の特定部３０４は、具体的には、特定した第１のセルＣから上方向に登場する、項目名となる文字列が入力された第３のセルＣに入力された文字列を特定してもよい。これにより、第２の特定部３０４は、選択部３０３が選択したセルＣに入力された数値に対応する階層構造の項目名の内、最下層の項目名よりも上位にある階層の項目名が入力されたセルＣを特定することができる。
【００４７】
第２の特定部３０４は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。特定結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００４８】
判定部３０５は、一方の方向が上方向である場合、第２の特定部３０４が特定した第２の入力領域から、下方向に辿って登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する。これにより、判定部３０５は、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列であるか否かを判定することができる。
【００４９】
判定部３０５は、一方の方向が上方向である場合、第２の特定部３０４が特定した第２の入力領域から左方向または右方向に登場する文字列が入力された入力領域から下方向に登場する未入力の入力領域を特定する。判定部３０５は、特定した未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する。これにより、判定部３０５は、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列であるか否かを判定することができる。
【００５０】
判定部３０５は、一方の方向が左方向である場合、第２の特定部３０４が特定した第２の入力領域から右方向に辿って登場する未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する。これにより、判定部３０５は、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列であるか否かを判定することができる。
【００５１】
判定部３０５は、一方の方向が左方向である場合、第２の特定部３０４が特定した第２の入力領域から上方向または下方向に登場する文字列が入力された入力領域から右方向に登場する未入力の入力領域を特定する。判定部３０５は、特定した未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する。これにより、判定部３０５は、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列であるか否かを判定することができる。
【００５２】
判定部３０５は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。判定結果は、例えば、ＲＡＭ２０３、ディスク２０５などの記憶領域に記憶される。
【００５３】
記憶部３０６は、第２の特定部３０４が特定した第１の入力領域に入力された文字列と、第２の特定部３０４が特定した第２の入力領域に入力された文字列とを、選択部３０３が選択した何れかの入力領域に入力されたデータに対応付けて記憶する。記憶部３０６は、例えば、第２の特定部３０４が特定した第１のセルＣに入力された文字列と、第２の特定部３０４が特定した第２のセルＣに入力された文字列とを、選択部３０３が選択した何れかのセルＣに入力された数値に対応付けて、記憶装置に記憶する。記憶装置は、例えば、ＲＡＭ２０３、ディスク２０５などである。これにより、記憶部３０６は、セルＣに入力された数値に、階層構造の項目名を対応付けることができる。
【００５４】
判定部３０５が、左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合がある。この場合には、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列である。このため、記憶部３０６は、第１の入力領域に入力された文字列と、第２の入力領域に入力された文字列とを、何れかの入力領域に入力されたデータに対応付けて記憶する。これにより、記憶部３０６は、セルＣに入力された数値に、階層構造の項目名を対応付けることができる。
【００５５】
判定部３０５が、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合がある。この場合には、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列ではない可能性がある。このため、記憶部３０６は、第１の入力領域に入力された文字列を、何れかの入力領域に入力されたデータに対応付けて記憶する。これにより、記憶部３０６は、セルＣに入力された数値に、階層構造の項目名を対応付けることができる。
【００５６】
判定部３０５が、上方向、下方向、および右方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合がある。この場合には、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列である。このため、記憶部３０６は、第１の入力領域に入力された文字列と、第２の入力領域に入力された文字列とを、何れかの入力領域に入力されたデータに対応付けて記憶する。これにより、記憶部３０６は、セルＣに入力された数値に、階層構造の項目名を対応付けることができる。
【００５７】
判定部３０５が、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合がある。この場合には、第２の特定部３０４が特定したセルＣに入力された文字列が、項目名になる文字列ではない可能性がある。このため、記憶部３０６は、第１の入力領域に入力された文字列を、何れかの入力領域に入力されたデータに対応付けて記憶する。これにより、記憶部３０６は、セルＣに入力された数値に、階層構造の項目名を対応付けることができる。
【００５８】
記憶部３０６は、さらに、第２の特定部３０４が特定した第３の入力領域に入力された文字列を、何れかの入力領域に入力されたデータに対応付けて記憶してもよい。記憶部３０６は、例えば、第２の特定部３０４が特定した第３のセルＣに入力された項目名になりうる文字列を、何れかの入力領域に入力された数値に対応付けて記憶する。これにより、記憶部３０６は、セルＣに入力された数値に、階層構造の項目名を対応付けることができる。
【００５９】
記憶部３０６は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、ディスク２０５などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００６０】
＜第２の動作例＞
第２の動作例は、第１の動作例を実行した際に項目名が記憶されなかった場合に、データ処理装置１００によって実行される。具体的には、第２の動作例は、表を形成する複数のセルＣに、複数の数値部が含まれ、いくつかの数値部が列方向または行方向の項目名を共有する場合に、データ処理装置１００によって実行される。第２の動作例は、第１の特定部３０２と、記憶部３０６とによって、実現される。
【００６１】
第１の特定部３０２は、特定した第１の区画から一方の方向に、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第２の区画が出現するか否かを判定する。第２の区画は、表内の何れかの数値部である。第１の特定部３０２は、例えば、第１の数値部を特定して第１の動作例を実行した際に、記憶部３０６が文字列を記憶することができなかった場合に、第１の数値部から上方向に、第２の数値部が出現するか否かを判定する。これにより、第１の特定部３０２は、第１の数値部と、項目名を共有する可能性がある第２の数値部があるか否かを判定することができる。
【００６２】
記憶部３０６は、第２の区画が出現すると判定した場合に、第１の区画の何れかの入力領域から一方の方向に辿って出現する、第２の区画の何れかの入力領域に入力されたデータに対応付けて記憶された文字列を取得する。そして、記憶部３０６は、取得した文字列を、第１の区画の何れかの入力領域に入力されたデータに対応付けて記憶する。これにより、記憶部３０６は、第１の数値部と第２の数値部とが項目名を共有していれば、第１の動作例において第１の数値部のデータに対応付けた項目名を流用することができる。
【００６３】
＜第３の動作例＞
第３の動作例は、第１の動作例を実行した際に項目名が記憶されなかった場合に、データ処理装置１００によって実行される。具体的には、第３の動作例は、表を形成する複数のセルＣに、複数の数値部が含まれ、いくつかの数値部が列方向または行方向の項目名を共有する場合に、データ処理装置１００によって実行される。第３の動作例は、選択部３０３と、第２の特定部３０４と、判定部３０５と、記憶部３０６とによって、実現される。
【００６４】
第１の特定部３０２は、特定した第１の区画から一方の方向に、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第２の区画が出現するか否かを判定する。第１の特定部３０２は、例えば、第１の数値を特定して第１の動作例を実行した際に、記憶部３０６が文字列を記憶することができなかった場合に、第１の数値部から上方向に、第２の数値部が出現するか否かを判定する。選択部３０３は、第２の区画が出現すると判定した場合に、第１の区画の何れかの入力領域を選択する。
【００６５】
第２の特定部３０４は、第２の区画から一方の方向に配置された複数の入力領域、および第２の区画から一方の方向に配置された複数の入力領域から一方の方向に直交する方向に配置された複数の入力領域が含まれる、第３の区画を特定する。そして、第２の特定部３０４は、特定した第３の区画の内、選択部３０３が選択した何れかの入力領域から、一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定する。第２の特定部３０４は、例えば、第２の数値部から上方向にある各行の入力領域の内、選択部３０３が選択した何れかの入力領域から上方向に辿って最初に登場する、文字列が入力された第１のセルＣを特定する。
【００６６】
また、第２の特定部３０４は、第１の動作例と同様に、第２の入力領域を特定する。第２の特定部３０４は、例えば、特定した第１のセルＣから上方向に登場する未入力のセルＣから、左方向に辿って最初に登場する、文字列が入力されたセルＣを特定する。これにより、第２の特定部３０４は、第１の数値部と第２の数値部とが項目名を共有している場合に、第２の数値部の何れかのデータが、第１の数値部の何れかのデータと共有する項目名が入力された第１のセルＣおよび第２のセルＣを特定することができる。
【００６７】
判定部３０５および記憶部３０６の処理は、動作例１と同様のため、説明を省略する。これにより、記憶部３０６は、第１の数値部と第２の数値部とが項目名を共有していれば、第２の数値部のデータに第１の数値部と共有する項目名を対応付けて記憶することができる。
【００６８】
（データ処理装置１００の実施例１）
次に、図４〜図１１を用いて、データ処理装置１００の実施例１について説明する。実施例１は、データ処理装置１００が、上述した動作例１を実行する場合に対応する実施例である。
【００６９】
図４〜図１１は、データ処理装置１００の実施例１を示す説明図である。データ処理装置１００は、図４に示す表Ｌを形成する複数のセルＣを有し、複数のセルＣのそれぞれにデータが入力されたファイルを取得する。
【００７０】
図４に示すように、表Ｌを形成するセルＣには、列方向の第１の階層の項目名が入力されるセルＣがある。列方向の第１の階層の項目名が入力されるセルＣには、例えば、第１の階層の項目名「タイプＡ施設」や「タイプＢ施設」や「タイプＣ施設（図示省略）」などが入力されている。具体的には、セルＣ（５，３）に、第１の階層の項目名「タイプＡ施設」が入力されている。第１の階層の項目名「タイプＡ施設」や「タイプＢ施設」や「タイプＣ施設（図示省略）」などが入力されるセルＣの内、左方向にあるセルＣと同一の項目名が入力されるセルＣは、項目名の入力が省略されている。具体的には、セルＣ（５，４）は、第１の階層の項目名「タイプＡ施設」が入力されるセルＣであるが、項目名の入力が省略されている。
【００７１】
表Ｌを形成するセルＣには、列方向の第１の階層の項目名の下位になる第２の階層の項目名が入力されるセルＣがある。列方向の第２の階層の項目名が入力されるセルＣには、例えば、第２の階層の項目名「施設数」や「定員」や「従事者数」などが入力されている。具体的には、セルＣ（７，３）に、第２の階層の項目名「施設数」が入力されている。また、第２の階層の項目名「施設数」や「定員」や「従事者数」などが入力されるセルＣの内、左方向にあるセルＣと同一の項目名が入力されるセルＣには、項目名の入力が省略されている。具体的には、セルＣ（７，６）は、第２の階層の項目名「従事者数」が入力されるセルＣであるが、項目名の入力が省略されている。
【００７２】
表Ｌを形成するセルＣには、列方向の第２の階層の項目名の下位になる第３の階層の項目名が入力されるセルＣがある。列方向の第３の階層の項目名が入力されるセルＣには、例えば、第３の階層の項目名「常勤換算数」や「延べ数」などが入力されている。具体的には、セルＣ（９，５）に、第３の階層の項目名「常勤換算数」が入力されている。また、列方向の第２の階層の項目名「施設数」の下位になる第３の階層の項目名はないため、セルＣ（９，３）などに項目名は設定されない。
【００７３】
これらの項目名によって、例えば、３列目の何れかのセルＣに入力された数値は、第１の階層の項目名「タイプＡ施設」についての数値であって、第２の階層の項目名「施設数」についての数値であることが示される。また、例えば、５列目の何れかのセルＣに入力された数値は、第１の階層の項目名「タイプＡ施設」についての数値であって、第２の階層の項目名「従事者数」についての数値であって、第３の階層の項目名「常勤換算数」についての数値であることが示される。以下の説明では、列方向の項目名を「項目名（列）」と表記する場合がある。
【００７４】
同様に、表Ｌを形成するセルＣには、行方向の第１の階層の項目名が入力されるセルＣ、および第２の階層の項目名が入力されるセルＣがある。これらの項目名によって、例えば、１１行目の何れかのセルＣに入力された数値は、第１の階層の項目名「北海道」についての数値であって、第２の階層の項目名「０１１００札幌市」についての数値であることが示される。以下の説明では、行方向の項目名を「項目名（行）」と表記する場合がある。次に、図５の説明に移行する。
【００７５】
図５において、データ処理装置１００は、表Ｌを形成する複数のセルＣの内、表Ｌの要素になる数値が入力された複数のセルＣが上下方向および左右方向に並べて配置された区画を、数値部Ｖａとして抽出する。そして、データ処理装置１００は、数値部Ｖａの内、最も左側にある列の列番号ｌｅｆｔ、最も右側にある列の列番号ｒｉｇｈｔ、最も上側にある行の行番号ｔｏｐ、最も下側にある行の行番号ｂｏｔｔｏｍを記憶する。
【００７６】
（１１）データ処理装置１００は、例えば、表Ｌを形成する複数のセルＣの内、数値が入力されたセルＣ、および数値がないことを示す記号「−」が入力されたセルＣなどが上下方向および左右方向に並べて配置された、数値部Ｖａを抽出する。
【００７７】
（１２）データ処理装置１００は、数値部Ｖａの内、最も左側にある列の列番号ｌｅｆｔ＝３、最も右側にある列の列番号ｒｉｇｈｔ＝１４、最も上側にある行の行番号ｔｏｐ＝１０、最も下側にある行の行番号ｂｏｔｔｏｍ＝１８を記憶する。次に、図６の説明に移行する。
【００７８】
図６において、データ処理装置１００は、数値部Ｖａの直上にある行番号ｔｏｐ−１の行から、行番号が大きい順に、数値部Ｖａと同一の幅になる行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を選択する。［ｓ，ｅ］は、始点ｓから終点ｅまでの範囲を示す。そして、データ処理装置１００は、選択した行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］について下記の処理１ａ〜１ｄの何れかを行う。
【００７９】
＜処理１ａ＞
データ処理装置１００は、例えば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣがあるか否かを判定する。そして、データ処理装置１００は、文字列が入力されたセルＣが１つであれば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］の処理を終了する。
【００８０】
＜処理１ｂ＞
データ処理装置１００は、例えば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣがあるか否かを判定する。そして、データ処理装置１００は、文字列が入力されたセルＣがなければ、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を、項目名（列）矩形候補に追加する。項目名（列）矩形候補は、項目名が入力されたセルＣが存在する可能性がある、矩形状に並べて配置された複数のセルＣであり、表Ｌの内の何れかの行である。
【００８１】
＜処理１ｃ＞
データ処理装置１００は、例えば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣがあるか否かを判定する。そして、データ処理装置１００は、すべてのセルＣが、文字列が入力されたセルＣであれば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を、項目名（列）矩形候補に追加する。
【００８２】
＜処理１ｄ＞
データ処理装置１００は、例えば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣがあるか否かを判定する。そして、データ処理装置１００は、文字列が入力されたセルＣが複数あれば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］の内、最も左側にある列から左方向に、未入力のセルＣが１つ、または複数連続してあるか否かを判定する。以下の説明では、未入力のセルＣを「空セルＣ」と表記する場合がある。そして、データ処理装置１００は、空セルＣが１つ、または複数連続していれば、空セルＣを空セル（列）集合に追加する。空セル（列）集合は、項目名が入力されていないと判定したセルＣの集合である。
【００８３】
また、データ処理装置１００は、さらに左方向に、データが入力されたセルＣを跨いで、空セルＣがあるか否かを判定する。データ処理装置１００は、データが入力されたセルＣを跨いで、空セルＣがあれば、空セルＣを補完可能セル（列）集合に追加する。補完可能セル（列）集合は、項目名の入力が省略された可能性があるセルＣの集合であって、左方向にある他のセルＣに入力された項目名によって項目名を補完可能なセルＣの集合である。また、データ処理装置１００は、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を、項目名（列）矩形候補に追加する。
【００８４】
図６の例では、（２１）データ処理装置１００は、例えば、行番号９の行のセル矩形［Ｃ（９，３），Ｃ（９，１４）］を選択する。そして、データ処理装置１００は、選択した行番号９の行のセル矩形［Ｃ（９，３），Ｃ（９，１４）］に、文字列が入力されたセルＣがあるか否かを判定する。
【００８５】
（２２）データ処理装置１００は、文字列が入力されたセルＣが複数あるため、行番号９の行のセル矩形［Ｃ（９，３），Ｃ（９，１４）］の内、最も左側にある列から左方向に、空セルＣが１つ、または複数連続してあるか否かを判定する。そして、データ処理装置１００は、複数の空セルＣ（９，３）、（９，４）が連続してあるため、空セルＣ（９，３）、（９，４）を、空セル（列）集合として記憶する。
【００８６】
（２３）データ処理装置１００は、さらに右方向に、データが入力されたセルＣを跨いで、空セルＣがあるか否かを判定する。データ処理装置１００は、データが入力されたセルＣ（９，５）、（９，６）を跨いで、空セルＣ（９，７）、（９，８）があるため、空セルＣ（９，７）、（９，８）を、補完可能セル（列）集合として記憶する。同様に、データ処理装置１００は、データが入力されたセルＣ（９，９）、（９，１０）を跨いで、空セルＣ（９，１１）、（９，１２）を、補完可能セル（列）集合として記憶する。
【００８７】
（２４）データ処理装置１００は、行番号９の行のセル矩形［Ｃ（９，３），Ｃ（９，１４）］を、項目名（列）矩形候補として記憶する。
【００８８】
（２５）データ処理装置１００は、例えば、行番号８の行のセル矩形［Ｃ（８，３），Ｃ（８，１４）］を選択する。データ処理装置１００は、選択した行番号８の行のセル矩形［Ｃ（８，３），Ｃ（８，１４）］に、文字列が入力されたセルＣがあるか否かを判定する。
【００８９】
（２６）データ処理装置１００は、文字列が入力されたセルＣが１つもないため、行番号８の行のセル矩形［Ｃ（８，３），Ｃ（８，１４）］を、項目名（列）矩形候補として記憶する。
【００９０】
（２７）データ処理装置１００は、例えば、行番号７〜３の行のセル矩形のそれぞれを選択する。そして、データ処理装置１００は、行番号７〜３の行のセル矩形のそれぞれについて、行番号９，８の行のセル矩形と同様に処理を行うことにより、項目名（列）矩形候補、空セル（列）集合、補完可能セル（列）集合のそれぞれに、情報を追加する。
【００９１】
（２８）データ処理装置１００は、行番号２の行のセル矩形［Ｃ（２，３），Ｃ（２，１４）］を選択する。データ処理装置１００は、選択した行番号２の行のセル矩形［Ｃ（２，３），Ｃ（２，１４）］に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣが１つであるため、行番号２の行のセルＣについて処理を行わない。次に、図７の説明に移行する。
【００９２】
図７において、データ処理装置１００は、項目名（列）矩形候補の内、最も上方向にある行番号３の行のセル矩形から、行番号が小さい順に、各行のセル矩形を選択する。そして、データ処理装置１００は、選択したセル矩形について下記の処理２ａ〜２ｄの何れかを行う。
【００９３】
＜処理２ａ＞
データ処理装置１００は、例えば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣがあるか否かを判定する。そして、データ処理装置１００は、文字列が入力されたセルＣがなければ、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を、項目名（列）矩形候補から削除する。
【００９４】
＜処理２ｂ＞
データ処理装置１００は、例えば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］のセルＣ（ｉ，ｌｅｆｔ）が空セル（列）集合に含まれるか否かを判定する。データ処理装置１００は、空セル（列）集合に含まれる場合、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］が、最も上方向にあるセル矩形であるか否かを判定する。そして、データ処理装置１００は、最も上方向にあるセル矩形であれば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を、項目名（列）矩形候補から削除する。
【００９５】
＜処理２ｃ＞
データ処理装置１００は、例えば、Ｃ（ｉ，ｊ）が、文字列が入力されたセルＣであれば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］が、最も上方向にあるセル矩形であるか否かを判定する。データ処理装置１００は、最も上方向にあるセル矩形であれば、文字列が入力された何れかのセルＣ（ｉ，ｊ）を選択して、第１の条件、および第２の条件を満たす変数ｋがあるか否かを判定する。
【００９６】
第１の条件は、空セル（列）集合に含まれない空セルＣが１つ、または複数連続するセル矩形［Ｃ（ｉ＋１，ｊ），Ｃ（ｋ，ｊ）］（ｉ＜ｋ＜ｔｏｐ）があることである。第２の条件は、セル矩形［Ｃ（ｋ＋１，ｊ），Ｃ（ｔｏｐ−１，ｊ）］とセル矩形［Ｃ（ｋ，ｊ＋１），Ｃ（ｋ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣがあることである。データ処理装置１００は、第１の条件および第２の条件を満たせば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を、項目名（列）矩形候補から削除する。
【００９７】
＜処理２ｄ＞
データ処理装置１００は、例えば、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］のセルＣ（ｉ，ｊ）が、空セル（列）集合に含まれるか否かを判定する。データ処理装置１００は、空セル（列）集合に含まれる場合には、そのまま、セルＣ（ｉ，ｊ）を空セルＣとする。
【００９８】
データ処理装置１００は、セルＣ（ｉ，ｊ）が補完可能セルＣに含まれるか否かを判定する。データ処理装置１００は、補完可能セルＣに含まれる場合に、上方向にあるセル矩形のセルＣ（ｉ−１−ｘ，ｊ）が、文字列が入力されたセルＣであるか否かを判定する。ｘは、項目名（列）矩形候補からセル矩形を削除した回数である。
【００９９】
データ処理装置１００は、上方向にあるセル矩形のセルＣ（ｉ−１−ｘ，ｊ）が、文字列が入力されたセルＣである場合には、セルＣ（ｉ，ｊ）を空セルＣとして記憶する。一方で、データ処理装置１００は、上方向にあるセル矩形のセルＣ（ｉ−１−ｘ，ｊ）が、文字列が入力されたセルＣではない場合には、セルＣ（ｉ，ｊ）をセルＣ（ｉ−１，ｊ）で補完する。
【０１００】
図７の例では、（３１）データ処理装置１００は、例えば、最も上方向にある行番号３の行のセル矩形［Ｃ（３，３），Ｃ（３，１４）］を選択する。データ処理装置１００は、行番号３の行のセル矩形［Ｃ（３，３），Ｃ（３，１４）］に、文字列が入力されたセルＣがあるか否かを判定する。
【０１０１】
（３２）データ処理装置１００は、文字列が入力されたセルＣがあるため、文字列が入力された何れかのセルＣ（３，６）を選択する。そして、データ処理装置１００は、選択したセルＣ（３，６）の下方向に、空セル（列）集合に含まれない１または複数の空セルＣを跨いで、文字列が入力されたセルＣがあるか否かを判定する。
【０１０２】
データ処理装置１００は、文字列が入力されたセルＣ（９，６）があるため、セルＣ（３，６）からセルＣ（９，６）までの間にある空セルＣから、さらに左方向および右方向に文字列が入力されたセルＣがあるか否かを判定する。そして、データ処理装置１００は、空セルＣ（５，６）から、左方向および右方向に文字列が入力されたセルＣ（５，３）、（５，７）があると判定する。
【０１０３】
ここで、選択したセルＣに入力された文字列が、項目名になる文字列ではないことがある。図７の例では、セルＣ（３，６）に入力された文字列「注２」が、セルＣ（９，６）に入力された文字列「延べ数」の上位にある階層の項目名である可能性がある。一方で、セルＣ（５，６）に入力が省略された文字列「タイプＡ施設」が、セルＣ（９，６）に入力された文字列「延べ数」の上位にある階層の項目名であって、セルＣ（３，６）に入力された文字列「注２」が項目名ではない可能性がある。
【０１０４】
図７の例では、データ処理装置１００は、セルＣ（５，３）の右方向に、セルＣ（５，７）があるため、セルＣ（５，６）に入力が省略された文字列「タイプＡ施設」があると判定する。換言すれば、セルＣ（３，６）に入力された文字列「注２」を、項目名になる文字列ではないと判定する。このため、データ処理装置１００は、セル矩形［Ｃ（３，３），Ｃ（３，１４）］には、項目名が入力されたセルＣがないと判定する。
【０１０５】
（３３）データ処理装置１００は、セル矩形［Ｃ（３，３），Ｃ（３，１４）］には、項目名が入力されたセルＣがないと判定したため、項目名（列）矩形候補から、選択した行番号３の行のセル矩形［Ｃ（３，３），Ｃ（３，１４）］を除外する。
【０１０６】
（３４）データ処理装置１００は、例えば、行番号４の行のセル矩形［Ｃ（４，３），Ｃ（４，１４）］を選択する。データ処理装置１００は、選択した行番号４の行のセル矩形［Ｃ（４，３），Ｃ（４，１４）］に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣがないため、項目名（列）矩形候補から、選択した行番号４の行のセル矩形［Ｃ（４，３），Ｃ（４，１４）］を除外する。
【０１０７】
（３５）データ処理装置１００は、例えば、行番号５の行のセル矩形［Ｃ（５，３），Ｃ（５，１４）］を選択する。データ処理装置１００は、選択した行番号５の行のセル矩形［Ｃ（５，３），Ｃ（５，１４）］の空セルＣ（５，４）を選択する。次に、データ処理装置１００は、選択した空セルＣ（５，４）の１つ左方向に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣ（５，３）があるため、セルＣ（５，４）に、セルＣ（５，３）に入力された文字列を入力することにより、補完する。
【０１０８】
データ処理装置１００は、同様に、セルＣ（５，５）に、セルＣ（５，４）に入力された文字列を入力することにより、補完する。また、データ処理装置１００は、同様に、セルＣ（５，６）に、セルＣ（５，５）に入力された文字列を入力することにより、補完する。また、データ処理装置１００は、同様に、セルＣ（５，８）〜Ｃ（５，１０）のそれぞれに、セルＣ（５，７）に入力された文字列を入力することにより、補完する。また、データ処理装置１００は、同様に、セルＣ（５，１２）〜Ｃ（５，１４）のそれぞれに、セルＣ（５，１１）に入力された文字列を入力することにより、補完する。
【０１０９】
（３６）データ処理装置１００は、例えば、行番号６の行のセル矩形［Ｃ（６，３），Ｃ（６，１４）］を選択する。データ処理装置１００は、選択した行番号６の行のセル矩形［Ｃ（６，３），Ｃ（６，１４）］に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣがないため、項目名（列）矩形候補から、選択した行番号６の行のセル矩形［Ｃ（６，３），Ｃ（６，１４）］を除外する。次に、図８の説明に移行する。
【０１１０】
（３７）データ処理装置１００は、例えば、行番号７の行のセル矩形［Ｃ（７，３），Ｃ（７，１４）］を選択する。データ処理装置１００は、選択した行番号７の行のセル矩形［Ｃ（７，３），Ｃ（７，１４）］の空セルＣ（７，６）を選択する。次に、データ処理装置１００は、選択した空セルＣ（７，６）の１つ左方向に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣ（７，５）があるため、セルＣ（７，６）に、セルＣ（７，５）に入力された文字列を入力することにより、補完する。
【０１１１】
データ処理装置１００は、同様に、セルＣ（７，１０）に、セルＣ（７，９）に入力された文字列を入力することにより、補完する。また、データ処理装置１００は、同様に、セルＣ（７，１４）に、セルＣ（７，１３）に入力された文字列を入力することにより、補完する。
【０１１２】
（３８）データ処理装置１００は、例えば、行番号８の行のセル矩形［Ｃ（８，３），Ｃ（８，１４）］を選択する。データ処理装置１００は、選択した行番号８の行のセル矩形［Ｃ（８，３），Ｃ（８，１４）］に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣがないため、項目名（列）矩形候補から、選択した行番号８の行のセル矩形［Ｃ（８，３），Ｃ（８，１４）］を除外する。
【０１１３】
（３９）データ処理装置１００は、例えば、行番号９の行のセル矩形［Ｃ（９，３），Ｃ（９，１４）］を選択する。データ処理装置１００は、選択した行番号９の行のセル矩形［Ｃ（９，３），Ｃ（９，１４）］の空セルＣ（９，３）を選択する。次に、データ処理装置１００は、選択した空セルＣ（９，３）が、空セル（列）集合にすでに含まれるため、空セルＣ（９，３）について補完しない。データ処理装置１００は、同様に、空セルＣ（９，４）について補完しない。
【０１１４】
（４０）データ処理装置１００は、選択した行番号９の行のセル矩形［Ｃ（９，３），Ｃ（９，１４）］の空セルＣ（９，７）を選択する。次に、データ処理装置１００は、選択した空セルＣ（９，７）の１つ左方向に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣ（９，６）があるため、空セルＣ（９，７）の上方向に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、セルＣ（７，７）があるため、セルＣ（９，７）について補完せず、空セル（列）集合として記憶する。データ処理装置１００は、同様に、セルＣ（９，８）、（９，１１）、（９，１２）について補完せず、空セル（列）集合として記憶する。
【０１１５】
（４１）データ処理装置１００は、セル矩形をすべて選択して処理を行った結果、項目名（列）矩形候補として、セル矩形［Ｃ（９，３），Ｃ（９，１４）］、［Ｃ（７，３），Ｃ（７，１４）］、［Ｃ（５，３），Ｃ（５，１４）］を記憶する。また、データ処理装置１００は、空セル（列）集合として、空セルＣ（９，３）、（９，４）、（９，７）、（９，８）、（９，１１）、（９，１２）を記憶する。次に、図９の説明に移行する。
【０１１６】
図９において、データ処理装置１００は、表Ｌの列ごとに、項目名（列）矩形候補の行のセル矩形のセルＣに入力された文字列を連結する。そして、データ処理装置１００は、列ごとに、連結した文字列を項目名（列）として、列番号に対応付けた情報を生成して、記憶する。
【０１１７】
（５１）データ処理装置１００は、例えば、表Ｌの列番号３の列において、行番号５の行のセル矩形のセルＣに入力された文字列「タイプＡ施設」と、行番号７の行のセル矩形のセルＣに入力された文字列「施設数」を連結する。そして、データ処理装置１００は、連結した文字列を項目名（列）として列番号３に対応付けた情報「３，“タイプＡ施設／施設数”」を記憶する。
【０１１８】
データ処理装置１００は、同様に、表Ｌの列番号４〜１４のそれぞれの列において、文字列を連結する。そして、データ処理装置１００は、表Ｌの列番号４〜１４のそれぞれの列において、連結した文字列を項目名（列）として、列番号に対応付けた情報を生成して、記憶する。これにより、データ処理装置１００は、項目名（列）となる列方向の階層構造の項目名を記憶することができる。次に、図１０の説明に移行する。
【０１１９】
図１０において、データ処理装置１００は、数値部Ｖａの直左にある列番号ｌｅｆｔ−１の列から、列番号が大きい順に、列番号ｉの列のセル矩形［Ｃ（ｔｏｐ，ｉ），Ｃ（ｂｏｔｔｏｍ，ｉ）］を選択する。そして、データ処理装置１００は、選択した列番号ｉの列のセル矩形［Ｃ（ｔｏｐ，ｉ），Ｃ（ｂｏｔｔｏｍ，ｉ）］について処理を行う。データ処理装置１００は、例えば、図４〜図９における各行の処理を各列の処理に置き換えて、同様の処理を行う。
【０１２０】
（６１）データ処理装置１００は、例えば、列番号２の列のセル矩形［Ｃ（１０，２），Ｃ（１８，２）］を選択する。データ処理装置１００は、選択した列番号２の列のセル矩形［Ｃ（１０，２），Ｃ（１８，２）］に、文字列が入力されたセルＣがあるか否かを判定する。
【０１２１】
（６２）データ処理装置１００は、文字列が入力されたセルＣが複数あるため、列番号２の列のセル矩形［Ｃ（１０，２），Ｃ（１８，２）］に、空セルＣがあるか否かを判定する。データ処理装置１００は、空セルＣがないため、列番号２の列のセル矩形［Ｃ（１０，２），Ｃ（１８，２）］を、項目名（行）矩形候補として記憶する。
【０１２２】
（６３）データ処理装置１００は、例えば、列番号１の列のセル矩形［Ｃ（１０，１），Ｃ（１８，１）］を選択する。データ処理装置１００は、選択した列番号１の列のセル矩形［Ｃ（１０，１），Ｃ（１８，１）］に、文字列が入力されたセルＣがあるか否かを判定する。
【０１２３】
（６４）データ処理装置１００は、文字列が入力されたセルＣが複数あるため、列番号１の列のセル矩形［Ｃ（１０，１），Ｃ（１８，１）］の内、最も上側にある行から下方向に、空セルＣが１つ、または複数連続してあるか否かを判定する。そして、データ処理装置１００は、空セルＣがないため、空セル（行）集合を記憶しない。
【０１２４】
（６５）データ処理装置１００は、さらに下方向に、データが入力されたセルＣを跨いで、空セルＣがあるか否かを判定する。データ処理装置１００は、列番号１の列のセル矩形［Ｃ（１０，１），Ｃ（１８，１）］の内、データが入力されたセルＣ（１０，１）、（１１，１）を跨いで、連続する空セルＣ（１２，１）〜Ｃ（１４，１）があるため、空セルＣ（１２，１）〜Ｃ（１４，１）を、補完可能セル（行）集合として記憶する。同様に、データ処理装置１００は、データが入力されたセルＣ（１５，１）を跨いで、空セルＣ（１６，１）、（１７，１）を、補完可能セル（行）集合として記憶する。
【０１２５】
（６６）データ処理装置１００は、列番号１の列のセル矩形［Ｃ（１０，１），Ｃ（１８，１）］を、項目名（行）矩形候補として記憶する。次に、図１１の説明に移行する。
【０１２６】
図１１において、データ処理装置１００は、項目名（行）矩形候補の内、列番号１の列のセル矩形から、列番号が小さい順に、各列のセル矩形を選択する。そして、データ処理装置１００は、選択したセル矩形について処理を行う。
【０１２７】
（７１）データ処理装置１００は、例えば、列番号１の列のセル矩形［Ｃ（１０，１），Ｃ（１８，１）］を選択する。データ処理装置１００は、選択した列番号１の列のセル矩形［Ｃ（１０，１），Ｃ（１８，１）］の空セルＣ（１２，１）を選択する。次に、データ処理装置１００は、選択した空セルＣ（１２，１）の１つ上方向に、文字列が入力されたセルＣがあるか否かを判定する。データ処理装置１００は、文字列が入力されたセルＣ（１１，１）があるため、セルＣ（１２，１）に、セルＣ（１１，１）に入力された文字列を入力することにより、補完する。
【０１２８】
データ処理装置１００は、同様に、セルＣ（１３，１）に、セルＣ（１２，１）に入力された文字列を入力することにより、補完する。また、データ処理装置１００は、同様に、セルＣ（１４，１）に、セルＣ（１３，１）に入力された文字列を入力することにより、補完する。また、データ処理装置１００は、同様に、セルＣ（１６，１）に、セルＣ（１５，１）に入力された文字列を入力することにより、補完する。また、データ処理装置１００は、同様に、セルＣ（１７，１）に、セルＣ（１６，１）に入力された文字列を入力することにより、補完する。
【０１２９】
（７２）データ処理装置１００は、例えば、列番号２の列のセル矩形［Ｃ（１０，２），Ｃ（１８，２）］を選択する。データ処理装置１００は、選択した列番号２の列のセル矩形［Ｃ（１０，２），Ｃ（１８，２）］の空セルがあるか否かを判定する。データ処理装置１００は、空セルＣがないため、補完しない。
【０１３０】
（７３）データ処理装置１００は、表Ｌの行ごとに、項目名（行）矩形候補の列のセル矩形のセルＣに入力された文字列を連結する。データ処理装置１００は、例えば、表Ｌの行番号１０の行において、列番号１の列のセル矩形のセルＣに入力された文字列「全国」と、列番号２の列のセル矩形のセルＣに入力された文字列「０００００全国」を連結する。そして、データ処理装置１００は、連結した文字列を項目名（行）として行番号１０に対応付けた情報「１０，“全国／０００００全国”」を記憶する。これにより、データ処理装置１００は、項目名（行）となる行方向の階層構造の項目名を記憶することができる。
【０１３１】
最後に、データ処理装置１００は、項目名（列）を列番号に対応付けた情報と、項目名（行）を行番号に対応付けた情報とに基づいて、表Ｌの要素になる数値が入力された、表Ｌの何れかのセルＣに入力された数値の種類を示す項目名を特定する。以下の説明では、表Ｌの何れかのセルＣに入力された数値の種類を示す項目名を「項目名（表Ｌ）」と表記する場合がある。データ処理装置１００は、例えば、セルＣ（３，１０）の項目名（表Ｌ）として、「３，“タイプＡ施設／施設数”」と、「１０，“全国／０００００全国”」とを連結した文字列を特定する。
【０１３２】
これにより、データ処理装置１００は、予め、項目名になる可能性がある文字列を予測することが難しい場合であっても、セルＣの数値に項目名を対応付けることができる。また、データ処理装置１００は、項目名が階層構造であって、セルＣに対する項目名の入力が省略される場合であっても、セルＣの数値に項目名を対応付けることができる。また、データ処理装置１００は、予め、学習用のファイル群を用いて、新たなファイルの何れかのセルＣに入力された項目名を特定する規則を自動学習しておかなくても、セルＣの数値に項目名を対応付けることができる。このように、データ処理装置１００は、セルＣの数値に項目名を対応付ける精度を向上させると共に、データ処理装置１００の利用者の作業量を低減することができる。
【０１３３】
（対応付け処理手順の一例）
次に、図１２を用いて、データ処理装置１００によって実行される、対応付け処理手順の一例について説明する。
【０１３４】
図１２は、対応付け処理手順の一例を示すフローチャートである。図１２において、データ処理装置１００は、ファイルを読み込んで、表Ｌを形成する複数のセルＣのそれぞれのセルＣの位置と、それぞれのセルＣに入力されたデータとを取得する（ステップＳ１２０１）。
【０１３５】
次に、データ処理装置１００は、表Ｌ内の数値部を特定して、数値部の最も左側にある列の列番号ｌｅｆｔ、最も右側にある列の列番号ｒｉｇｈｔ、最も上側にある行の行番号ｔｏｐ、最も下側にある行の行番号ｂｏｔｔｏｍを記憶する（ステップＳ１２０２）。
【０１３６】
そして、データ処理装置１００は、項目名（列）抽出処理を実行する（ステップＳ１２０３）。また、データ処理装置１００は、項目名（行）抽出処理を実行する（ステップＳ１２０４）。データ処理装置１００は、項目名（列）抽出処理より前に、項目名（行）抽出処理を実行してもよい。
【０１３７】
次に、データ処理装置１００は、ステップＳ１２０３において特定した各列の行番号に対応する項目名（列）と、ステップＳ１２０４において特定した各行の行番号に対応する項目名（行）とに基づいて、表Ｌの要素に項目名（表Ｌ）を対応付ける（ステップＳ１２０５）。そして、データ処理装置１００は、項目名（表Ｌ）を対応付けた要素を出力して（ステップＳ１２０６）、対応付け処理を終了する。これにより、データ処理装置１００は、セルＣの数値に項目名（表Ｌ）を対応付けることができる。
【０１３８】
（項目名（列）抽出処理手順の一例）
次に、図１３および図１４を用いて、ステップＳ１２０３において、データ処理装置１００によって実行される、項目名（列）を抽出する項目名（列）抽出処理手順の一例について説明する。
【０１３９】
図１３および図１４は、項目名（列）抽出処理手順の一例を示すフローチャートである。図１３において、データ処理装置１００は、行番号ｉに、ｔｏｐ−１を代入する（ステップＳ１３０１）。次に、データ処理装置１００は、行番号ｉが、表Ｌ内の行番号であるか否かを判定する（ステップＳ１３０２）。ここで、表Ｌ内の行番号ではない場合（ステップＳ１３０２：Ｎｏ）、データ処理装置１００は、図１４のステップＳ１４０１の処理に移行する。
【０１４０】
一方で、表Ｌ内の行番号である場合（ステップＳ１３０２：Ｙｅｓ）、データ処理装置１００は、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣが１つであるか否かを判定する（ステップＳ１３０３）。ここで、１つである場合（ステップＳ１３０３：Ｙｅｓ）、データ処理装置１００は、図１４のステップＳ１４０１の処理に移行する。
【０１４１】
一方で、１つではない場合（ステップＳ１３０３：Ｎｏ）、データ処理装置１００は、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］のすべてのセルＣが、文字列が入力されたセルＣであるか否かを判定する（ステップＳ１３０４）。また、データ処理装置１００は、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］のすべてのセルＣが、文字列が未入力のセルＣであるか否かを判定する（ステップＳ１３０４）。
【０１４２】
ここで、すべてのセルＣが、文字列が入力されたセルＣである場合、または、すべてのセルＣが、文字列が未入力のセルＣである場合（ステップＳ１３０４：Ｙｅｓ）、データ処理装置１００は、ステップＳ１３１０の処理に移行する。
【０１４３】
一方で、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］のセルＣに、文字列が入力されたセルＣと文字列が未入力のセルＣとが含まれる場合（ステップＳ１３０４：Ｎｏ）、データ処理装置１００は、ステップＳ１３０５の処理に移行する。
【０１４４】
ステップＳ１３０５において、データ処理装置１００は、最も左側にある列から左方向に、文字列が未入力のセルＣが１つ、または複数連続するセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｊ）］（ｌｅｆｔ≦ｊ＜ｒｉｇｈｔ）があるか否かを判定する（ステップＳ１３０５）。ここで、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｊ）］がない場合（ステップＳ１３０５：Ｎｏ）、データ処理装置１００は、ステップＳ１３０７の処理に移行する。
【０１４５】
一方で、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｊ）］がある場合（ステップＳ１３０５：Ｙｅｓ）、データ処理装置１００は、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｊ）］を、空セル（列）集合として記憶する（ステップＳ１３０６）。そして、データ処理装置１００は、ステップＳ１３０７の処理に移行する。
【０１４６】
ステップＳ１３０７において、データ処理装置１００は、最も左側にある列から左方向に、データが入力されたセルＣを跨いで、文字列が未入力のセルＣ（ｉ，ｊ）（ｌｅｆｔ≦ｊ＜ｒｉｇｈｔ）があるか否かを判定する（ステップＳ１３０７）。ここで、文字列が未入力のセルＣ（ｉ，ｊ）がない場合（ステップＳ１３０７：Ｎｏ）、データ処理装置１００は、ステップＳ１３１０の処理に移行する。
【０１４７】
一方で、文字列が未入力のセルＣ（ｉ，ｊ）がある場合（ステップＳ１３０７：Ｙｅｓ）、データ処理装置１００は、文字列が未入力のセルＣ（ｉ，ｊ）の内、１つ左方向に、文字列が入力されたセルＣ（ｉ，ｊ−１）または、補完可能セル（列）集合に含まれるセルＣ（ｉ，ｊ−１）がある、セルＣ（ｉ，ｊ）があるか否かを判定する（ステップＳ１３０８）。ここで、セルＣ（ｉ，ｊ）がない場合（ステップＳ１３０８：Ｎｏ）、データ処理装置１００は、図１４のステップＳ１４０１の処理に移行する。
【０１４８】
一方で、セルＣ（ｉ，ｊ）がある場合（ステップＳ１３０８：Ｙｅｓ）、データ処理装置１００は、セルＣ（ｉ，ｊ）を補完可能セル（列）集合として記憶する（ステップＳ１３０９）。そして、データ処理装置１００は、ステップＳ１３１０の処理に移行する。
【０１４９】
ステップＳ１３１０において、データ処理装置１００は、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を、項目名（列）矩形候補として記憶する（ステップＳ１３１０）。次に、データ処理装置１００は、変数ｉをデクリメントする（ステップＳ１３１１）。そして、データ処理装置１００は、ステップＳ１３０２の処理に戻る。
【０１５０】
図１４において、データ処理装置１００は、変数ｉに、項目名（列）矩形候補の内、最も上方向にあるセル矩形の行番号を設定する（ステップＳ１４０１）。次に、データ処理装置１００は、ｉが、項目名（列）矩形候補のセル矩形の内の何れかのセル矩形の行番号であるか否かを判定する（ステップＳ１４０２）。ここで、行番号ではない場合（ステップＳ１４０２：Ｎｏ）、データ処理装置１００は、ステップＳ１４１４の処理に移行する。
【０１５１】
一方で、行番号である場合（ステップＳ１４０２：Ｙｅｓ）、データ処理装置１００は、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］のすべてのセルＣが、文字列が未入力のセルＣであるか否かを判定する（ステップＳ１４０３）。ここで、すべてのセルＣが、文字列が未入力のセルＣである場合（ステップＳ１４０３：Ｙｅｓ）、データ処理装置１００は、セル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を項目名（列）矩形候補から削除する（ステップＳ１４０４）。
【０１５２】
次に、データ処理装置１００は、変数ｉをインクリメントする（ステップＳ１４０５）。そして、データ処理装置１００は、ステップＳ１４０２の処理に戻る。
【０１５３】
一方で、文字列が入力されたセルＣがある場合（ステップＳ１４０３：Ｎｏ）、データ処理装置１００は、ｉが、項目名（列）矩形候補のセルＣ候補の内、最も上方向にあるセル矩形の行番号であるか否かを判定する（ステップＳ１４０６）。ここで、最も上方向にあるセル矩形の行番号である場合（ステップＳ１４０６：Ｙｅｓ）、データ処理装置１００は、文字列が入力されたセルＣ（ｉ，ｊ）を特定する（ステップＳ１４０７）。
【０１５４】
次に、データ処理装置１００は、第１の条件、および第２の条件を満たす変数ｋがあるか否かを判定する（ステップＳ１４０８）。第１の条件は、空セル（列）集合に含まれない空セルＣが１つ、または複数連続するセル矩形［Ｃ（ｉ＋１，ｊ），Ｃ（ｋ，ｊ）］（ｉ＜ｋ＜ｔｏｐ）があることである。第２の条件は、セル矩形［Ｃ（ｋ＋１，ｊ），Ｃ（ｔｏｐ−１，ｊ）］とセル矩形［Ｃ（ｋ，ｊ＋１），Ｃ（ｋ，ｒｉｇｈｔ）］に、文字列が入力されたセルＣがあることである。
【０１５５】
ここで、第１の条件および第２の条件を満たす変数ｋがある場合（ステップＳ１４０８：Ｙｅｓ）、データ処理装置１００は、ステップＳ１４０４の処理に移行する。一方で、第１の条件または第２の条件を満たさない場合（ステップＳ１４０８：Ｎｏ）、データ処理装置１００は、セルＣ（ｉ，ｊ）を、セルＣ（ｉ−１，ｊ）で補完する（ステップＳ１４０９）。そして、データ処理装置１００は、ステップＳ１４０５の処理に移行する。
【０１５６】
一方で、最も上方向にあるセル矩形の行番号ではない場合（ステップＳ１４０６：Ｎｏ）、データ処理装置１００は、項目名（列）矩形候補のセル矩形の内、行番号がｉのセル矩形の１つ上方向にあるセル矩形の行番号になる、変数ｉ−１−ｘを算出する（ステップＳ１４１０）。
【０１５７】
次に、データ処理装置１００は、補完可能セル（列）集合に含まれるセルＣ（ｉ，ｊ）があるか否かを判定する（ステップＳ１４１１）。ここで、セルＣ（ｉ，ｊ）がない場合（ステップＳ１４１１：Ｎｏ）、データ処理装置１００は、ステップＳ１４０５の処理に移行する。
【０１５８】
一方で、補完可能セル（列）集合に含まれるセルＣ（ｉ，ｊ）がある場合（ステップＳ１４１１：Ｙｅｓ）、データ処理装置１００は、補完可能セル（列）集合に含まれるセルＣ（ｉ，ｊ）の上方向に、文字列が入力されたセルＣ（ｉ−１−ｘ，ｊ）があるか否かを判定する（ステップＳ１４１２）。ここで、文字列が入力されたセルＣ（ｉ−１−ｘ，ｊ）がある場合（ステップＳ１４１２：Ｙｅｓ）、データ処理装置１００は、セルＣ（ｉ，ｊ）を空セル（列）集合に追加する（ステップＳ１４１３）。
【０１５９】
一方で、文字列が入力されたセルＣ（ｉ−１−ｘ，ｊ）がない場合（ステップＳ１４１２：Ｎｏ）、データ処理装置１００は、ステップＳ１４０９の処理に移行する。
【０１６０】
ステップＳ１４１４において、データ処理装置１００は、項目名（列）矩形候補の内、文字列が入力されたセルＣ（ｉ，ｊ）があれば、文字列変数ｎａｍｅ＿ｊに、セルＣ（ｉ，ｊ）に入力された文字列と区切り記号とを連結した文字列を、ｊ列の項目名（列）として記憶する（ステップＳ１４１４）。これにより、データ処理装置１００は、各列方向の項目名（列）を記憶することができる。
【０１６１】
（項目名（行）抽出処理手順の一例）
ステップＳ１２０４において、データ処理装置１００によって実行される、行方向の項目名を抽出する項目名（行）抽出処理手順の一例は、図１３および図１４を用いて説明した項目名（列）抽出処理手順において上下方向と左右方向とを入れ替えた場合の処理である。このため、項目名（行）抽出処理手順の一例についての説明を省略する。これにより、データ処理装置１００は、各行方向の項目名（行）を記憶することができる。
【０１６２】
（データ処理装置１００の実施例２）
次に、図１５および図１６を用いて、データ処理装置１００の実施例２について説明する。実施例２は、データ処理装置１００が、上述した動作例２、または動作例３を実行する場合に対応する実施例である。
【０１６３】
図１５および図１６は、データ処理装置１００の実施例２を示す説明図である。データ処理装置１００は、図１５に示す表Ｌを形成する複数のセルＣを有し、複数のセルＣのそれぞれにデータが入力されたファイルを取得する。
【０１６４】
図１５に示すように、表Ｌを形成する複数のセルＣには、複数の数値部Ｖａ〜Ｖｄが含まれる。図１５の例では、数値部Ｖａと、数値部Ｖｂとは、項目名（列）を共有する。例えば、数値部Ｖａの項目名（列）が入力された複数のセルＣは、数値部Ｖｂの項目名（列）が入力された複数のセルＣとしても流用される。このため、数値部Ｖｂから数値部Ｖａまでの間には、項目名が入力されたセルＣがない。次に、図１６の説明に移行する。
【０１６５】
図１６において、データ処理装置１００は、表Ｌを形成する複数のセルＣの内、複数の数値部を抽出する。そして、データ処理装置１００は、複数の数値部のそれぞれの数値部の内、最も左側にある列の列番号ｌｅｆｔ、最も右側にある列の列番号ｒｉｇｈｔ、最も上側にある行の行番号ｔｏｐ、最も下側にある行の行番号ｂｏｔｔｏｍを記憶する。
【０１６６】
（８１）データ処理装置１００は、例えば、表Ｌを形成する複数のセルＣの内、数値が入力されたセルＣ、および数値がないことを示す記号「−」が入力されたセルＣなどが上下方向および左右方向に並べて配置された、数値部Ｖａを抽出する。
【０１６７】
データ処理装置１００は、実施例１と同様に、数値部Ｖａの内、最も左側にある列の列番号ｌｅｆｔ＝３、最も右側にある列の列番号ｒｉｇｈｔ＝１０、最も上側にある行の行番号ｔｏｐ＝１０、最も下側にある行の行番号ｂｏｔｔｏｍ＝１８を記憶する。そして、データ処理装置１００は、実施例１と同様に、項目名（列）矩形候補を記憶し、項目名（列）を特定する。
【０１６８】
（８２）データ処理装置１００は、例えば、表Ｌを形成する複数のセルＣの内、数値が入力されたセルＣ、および数値がないことを示す記号「−」が入力されたセルＣなどが上下方向および左右方向に並べて配置された、数値部Ｖｂを抽出する。
【０１６９】
データ処理装置１００は、実施例１と同様に、数値部Ｖｂの内、最も左側にある列の列番号ｌｅｆｔ＝３、最も右側にある列の列番号ｒｉｇｈｔ＝１４、最も上側にある行の行番号ｔｏｐ＝２３、最も下側にある行の行番号ｂｏｔｔｏｍ＝２６を記憶する。そして、データ処理装置１００は、実施例１と同様に、項目名（列）矩形候補を記憶し、項目名（列）を特定する。ここで、データ処理装置１００は、数値部Ｖｂから数値部Ｖａまでの間には、項目名が入力されたセルＣがないため、項目名（列）矩形候補を特定することができなかったとする。このとき、データ処理装置１００は、下記の処理３ａ〜３ｃの何れかを行う。
【０１７０】
＜処理３ａ＞
データ処理装置１００は、例えば、項目名が未特定の数値部の上方向に、他の数値部があるか否かを判定する。データ処理装置１００は、他の数値部があれば、未特定の数値部のｌｅｆｔ〜ｒｉｇｈｔが、他の数値部Ｖａのｌｅｆｔ〜ｒｉｇｈｔに含まれるか否かを判定する。データ処理装置１００は、含まれる場合には、他の数値部についての項目名（列）を列番号に対応付けた情報を、未特定の数値部についての項目名（列）を列番号に対応付けた情報として流用する。
【０１７１】
＜処理３ｂ＞
データ処理装置１００は、処理３ａと同様に、他の数値部があれば、未特定の数値部のｌｅｆｔ〜ｒｉｇｈｔが、他の数値部Ｖａのｌｅｆｔ〜ｒｉｇｈｔに含まれるか否かを判定する。データ処理装置１００は、含まれない場合には、他の数値部の左右方向に、さらに別の数値部があるか否かを判定する。データ処理装置１００は、さらに別の数値部があれば、別の数値部のｌｅｆｔ〜ｒｉｇｈｔが、未特定の数値部のｌｅｆｔ〜ｒｉｇｈｔと重複するか否かを判定する。データ処理装置１００は、重複する場合には、未特定の数値部の項目名（列）を特定することができないと判定する。
【０１７２】
＜処理３ｃ＞
データ処理装置１００は、処理３ｂと同様に、別の数値部のｌｅｆｔ〜ｒｉｇｈｔが、未特定の数値部のｌｅｆｔ〜ｒｉｇｈｔと重複するか否かを判定する。データ処理装置１００は、重複しない場合には、他の数値部のｔｏｐ，ｂｏｔｔｏｍと、未特定の数値部のｌｅｆｔ，ｒｉｇｈｔとの組み合わせを生成する。次に、データ処理装置１００は、生成した組み合わせを用いて、他の数値部の直上にある行番号ｔｏｐ−１の行から、行番号が大きい順に、行番号ｉの行のセル矩形［Ｃ（ｉ，ｌｅｆｔ），Ｃ（ｉ，ｒｉｇｈｔ）］を選択する。そして、データ処理装置１００は、実施例１と同様にして、数値部Ｖｂについての項目名（列）を列番号に対応付けた情報を生成する。
【０１７３】
図１６の例では、（８３）データ処理装置１００は、列方向において、数値部Ｖｂのｌｅｆｔ〜ｒｉｇｈｔが、数値部Ｖａのｌｅｆｔ〜ｒｉｇｈｔと重複し、数値部Ｖｃのｌｅｆｔ〜ｒｉｇｈｔとは重複しないと判定する。このため、データ処理装置１００は、数値部Ｖａのｔｏｐ，ｂｏｔｔｏｍと、数値部Ｖｂのｌｅｆｔ，ｒｉｇｈｔとを組み合わせる。データ処理装置１００は、例えば、ｌｅｆｔ＝３、ｒｉｇｈｔ＝１４、ｔｏｐ＝１０、ｂｏｔｔｏｍ＝１８を記憶する。
【０１７４】
（８４）データ処理装置１００は、組み合わせたｌｅｆｔ＝３、ｒｉｇｈｔ＝１４、ｔｏｐ＝１０、ｂｏｔｔｏｍ＝１８に基づいて、実施例１と同様に、項目名（列）矩形候補を記憶し、項目名（列）を特定する。また、データ処理装置１００は、項目名（行）を共有する他の数値部があれば、図１６における各行の処理を各列の処理に置き換えて、同様の処理を行う。
【０１７５】
ここでは、データ処理装置１００は、項目名（行）を共有する他の数値部がないため、数値部Ｖｂのｌｅｆｔ＝３、ｒｉｇｈｔ＝１４、ｔｏｐ＝２３、ｂｏｔｔｏｍ＝２６に基づいて、実施例１と同様に、項目名（行）矩形候補を記憶し、項目名（行）を特定する。
【０１７６】
（８５）データ処理装置１００は、項目名（列）を列番号に対応付けた情報と、項目名（行）を行番号に対応付けた情報とに基づいて、表Ｌの要素になる数値が入力されたセルＣの項目名（表Ｌ）を特定する。データ処理装置１００は、例えば、セルＣ（２３，３）の項目名（表）として、「３，“タイプＡ施設／施設数”」と、「２３，“全国／０００００全国”」とを連結した文字列を特定する。これにより、データ処理装置１００は、複数の数値部が項目名を共有している場合であっても、それぞれの数値部の数値に項目名を対応付けて記憶することができる。
【０１７７】
（共有項目名（列）抽出処理手順の一例）
次に、図１７を用いて、データ処理装置１００によって実行される、共有される項目名（列）を抽出する共有項目名（列）抽出処理手順の一例について説明する。
【０１７８】
図１７は、共有項目名（列）抽出処理手順の一例を示すフローチャートである。図１７において、データ処理装置１００は、ファイルを読み込んで、表Ｌを形成する複数のセルＣのそれぞれのセルＣの位置と、それぞれのセルＣに入力されたデータとを取得する（ステップＳ１７０１）。
【０１７９】
次に、データ処理装置１００は、表Ｌ内の数値部を特定して、数値部の最も左側にある列の列番号ｌｅｆｔ、最も右側にある列の列番号ｒｉｇｈｔ、最も上側にある行の行番号ｔｏｐ、最も下側にある行の行番号ｂｏｔｔｏｍを記憶する（ステップＳ１７０２）。
【０１８０】
そして、データ処理装置１００は、上方向にある数値部よりも下方向にあり、ｔｏｐよりも上方向にある列の範囲で、［ｌｅｆｔ，ｒｉｇｈｔ］で数値が入力された列のすべてにおいて、文字列が入力されたセルＣがあるか否かを判定する（ステップＳ１７０３）。ここで、文字列が入力されたセルＣがない場合（ステップＳ１７０３：Ｎｏ）、データ処理装置１００は、ステップＳ１７０５の処理に移行する。
【０１８１】
一方で、文字列が入力されたセルＣがある場合（ステップＳ１７０３：Ｙｅｓ）、データ処理装置１００は、項目名（列）矩形候補と、項目名（列）とが抽出されたか否かを判定する（ステップＳ１７０４）。ここで、抽出された場合（ステップＳ１７０４：Ｙｅｓ）、データ処理装置１００は、ステップＳ１７１１の処理に移行する。
【０１８２】
一方で、抽出されていない場合（ステップＳ１７０４：Ｎｏ）、データ処理装置１００は、ｔｏｐよりも上方向に、項目名（列）が抽出済みの他の数値部｛ｔｏｐ’，ｌｅｆｔ’，ｂｏｔｔｏｍ’，ｒｉｇｈｔ’｝があるか否かを判定する（ステップＳ１７０５）。ここで、他の数値部がない場合（ステップＳ１７０５：Ｎｏ）、データ処理装置１００は、ステップＳ１７０８の処理に移行する。
【０１８３】
一方で、他の数値部がある場合（ステップＳ１７０５：Ｙｅｓ）、データ処理装置１００は、［ｌｅｆｔ，ｒｉｇｈｔ］が［ｌｅｆｔ’，ｒｉｇｈｔ’］に含まれるか否かを判定する（ステップＳ１７０６）。ここで、含まれる場合（ステップＳ１７０６：Ｙｅｓ）、データ処理装置１００は、ステップＳ１７１０の処理に移行する。
【０１８４】
一方で、含まれない場合（ステップＳ１７０６：Ｎｏ）、データ処理装置１００は、｛ｔｏｐ’ ，ｌｅｆｔ，ｂｏｔｔｏｍ’ ，ｒｉｇｈｔ｝に、さらに、他の数値部が重複するか否かを判定する（ステップＳ１７０７）。ここで、重複する場合（ステップＳ１７０７：Ｙｅｓ）、データ処理装置１００は、項目名の付与不可能をあらわす情報を出力する（ステップＳ１７０８）。そして、データ処理装置１００は、共有項目名（列）抽出処理を終了する。
【０１８５】
一方で、重複しない場合（ステップＳ１７０７：Ｎｏ）、データ処理装置１００は、他の数値部｛ｔｏｐ，ｌｅｆｔ’ ，ｂｏｔｔｏｍ，ｒｉｇｈｔ’｝として、項目名（列）抽出処理を実行する（ステップＳ１７０９）。次に、データ処理装置１００は、抽出した他の数値部についての項目名（列）を、特定した数値部についての項目名（列）として記憶する（ステップＳ１７１０）。
【０１８６】
そして、データ処理装置１００は、数値部｛ｔｏｐ，ｌｅｆｔ，ｂｏｔｔｏｍ，ｒｉｇｈｔ｝のそれぞれのセルＣに入力された数値に、項目名（列）を付与する（ステップＳ１７１１）。次に、データ処理装置１００は、項目名（列）を付与した数値を出力する（ステップＳ１７１２）。そして、データ処理装置１００は、共有項目名（列）抽出処理を終了する。これにより、データ処理装置１００は、複数の数値部が、項目名（列）を共有している場合であっても、それぞれの数値部の数値に項目名（列）を対応付けて記憶することができる。
【０１８７】
（共有項目名（行）抽出処理手順の一例）
データ処理装置１００によって実行される、共有される行方向の項目名を抽出する共有項目名（行）抽出処理手順の一例は、図１７を用いて説明した共有項目名（列）抽出処理手順において上下方向と左右方向とを入れ替えた場合の処理である。このため、共有項目名（行）抽出処理手順の一例についての説明を省略する。これにより、データ処理装置１００は、複数の数値部が、項目名（行）を共有している場合であっても、それぞれの数値部の数値に項目名（行）を対応付けて記憶することができる。
【０１８８】
以上説明したように、データ処理装置１００によれば、複数の入力領域の内、データが入力された入力領域の何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する文字列が入力された第１の入力領域を特定することができる。また、データ処理装置１００によれば、特定した第１の入力領域から一方の方向に登場する未入力の入力領域から、上方向および左方向の内、一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定することができる。そして、データ処理装置１００によれば、第１の入力領域に入力された文字列と、特定した第２の入力領域に入力された文字列とを、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１８９】
これにより、データ処理装置１００は、予め、項目名になる可能性がある文字列を予測することが難しい場合であっても、セルＣの数値に項目名を対応付けることができる。また、データ処理装置１００は、項目名が階層構造であって、セルＣに対する項目名の入力が省略される場合であっても、セルＣの数値に項目名を対応付けることができる。また、データ処理装置１００は、予め、学習用のファイル群を用いて、新たなファイルの何れかのセルＣに入力された項目名を特定する規則を自動学習しておかなくても、セルＣの数値に項目名を対応付けることができる。このように、データ処理装置１００は、セルＣの数値に項目名を対応付ける精度を向上させると共に、データ処理装置１００の利用者の作業量を低減することができる。
【０１９０】
また、データ処理装置１００によれば、一方の方向が上方向である場合、第２の入力領域から、下方向に辿って登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定することができる。ここで、左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定される場合がある。この場合、データ処理装置１００によれば、第１の入力領域に入力された文字列と、第２の入力領域に入力された文字列とを、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９１】
これにより、データ処理装置１００は、特定した第２の入力領域に入力された文字列が、項目名になる文字列であるか否かを判定することができる。そして、データ処理装置１００は、第２の入力領域に入力された文字列が、項目名になる文字列であれば、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９２】
また、データ処理装置１００によれば、一方の方向が上方向である場合、第２の入力領域から左方向または右方向に登場する文字列が入力された入力領域を特定することができる。次に、データ処理装置１００によれば、特定した入力領域から下方向に登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定することができる。ここで、左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定される場合がある。この場合、データ処理装置１００によれば、第１の入力領域に入力された文字列と、第２の入力領域に入力された文字列とを、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９３】
これにより、データ処理装置１００は、特定した第２の入力領域に入力された文字列が、項目名になる文字列であるか否かを判定することができる。そして、データ処理装置１００は、第２の入力領域に入力された文字列が、項目名になる文字列であれば、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９４】
また、データ処理装置１００によれば、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合に、第１の入力領域に入力された文字列を、何れかの入力領域に入力されたデータに対応付けて記憶することができる。これにより、データ処理装置１００は、第２の入力領域に入力された文字列が、項目名になる文字列でなければ、何れかの入力領域に入力されたデータに対応付けないことができる。
【０１９５】
また、データ処理装置１００によれば、一方の方向が左方向である場合、第２の入力領域から右方向に辿って登場する未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定することができる。ここで、上方向、下方向、および右方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定される場合がある。この場合、データ処理装置１００によれば、第１の入力領域に入力された文字列と、第２の入力領域に入力された文字列とを、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９６】
これにより、データ処理装置１００は、特定した第２の入力領域に入力された文字列が、項目名になる文字列であるか否かを判定することができる。そして、データ処理装置１００は、第２の入力領域に入力された文字列が、項目名になる文字列であれば、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９７】
また、データ処理装置１００によれば、一方の方向が左方向である場合、第２の入力領域から上方向または下方向に登場する文字列が入力された入力領域を特定することができる。次に、データ処理装置１００によれば、特定した入力領域から右方向に登場する未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定することができる。ここで、上方向、下方向、および右方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定される場合がある。この場合、データ処理装置１００によれば、第１の入力領域に入力された文字列と、第２の入力領域に入力された文字列とを、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９８】
これにより、データ処理装置１００は、特定した第２の入力領域に入力された文字列が、項目名になる文字列であるか否かを判定することができる。そして、データ処理装置１００は、第２の入力領域に入力された文字列が、項目名になる文字列であれば、何れかの入力領域に入力されたデータに対応付けて記憶することができる。
【０１９９】
また、データ処理装置１００によれば、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合に、第１の入力領域に入力された文字列を、何れかの入力領域に入力されたデータに対応付けて記憶することができる。これにより、データ処理装置１００は、第２の入力領域に入力された文字列が、項目名になる文字列でなければ、何れかの入力領域に入力されたデータに対応付けないことができる。
【０２００】
また、データ処理装置１００によれば、さらに、第１の入力領域から一方の方向に登場する、文字列が入力された第３の入力領域に入力された文字列を、何れかの入力領域に入力されたデータに対応付けて記憶することができる。これにより、データ処理装置１００は、何れかのセルＣに入力されたデータに対応する階層構造の項目名の内、最下層の項目名よりも上位にある階層の項目名が入力されたセルＣを特定することができる。
【０２０１】
また、データ処理装置１００によれば、複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定することができる。また、データ処理装置１００によれば、特定した第１の区画から一方の方向に、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第２の区画が出現するか否かを判定することができる。
【０２０２】
次に、データ処理装置１００によれば、第２の区画が出現すると判定した場合に、第１の区画の何れかの入力領域から一方の方向に辿って出現する、第２の区画の何れかの入力領域に入力されたデータに対応付けて記憶された文字列を取得することができる。そして、データ処理装置１００によれば、第１の区画の何れかの入力領域に入力されたデータに対応付けて記憶することができる。これにより、データ処理装置１００は、第１の区画と第２の区画とが項目名を共有していれば、既に第１の区画のデータに対応付けた項目名を、第２の区画のデータに対応付ける項目名として流用することができる。
【０２０３】
また、データ処理装置１００によれば、第２の区画が出現すると判定した場合に、第１の区画の何れかの入力領域を選択することができる。データ処理装置１００によれば、第２の区画から一方の方向に配置された複数の入力領域、および第２の区画から一方の方向に配置された複数の入力領域から一方の方向に直交する方向に配置された複数の入力領域の内、第１の入力領域を特定することができる。
【０２０４】
これにより、データ処理装置１００は、第１の区画と第２の区画とが項目名を共有している場合に、第１の区画の何れかのデータが、第２の区画の何れかのデータと共有する項目名が入力された第１の入力領域および第２の入力領域を特定することができる。そして、データ処理装置１００は、第１の区画のデータに第２の区画と共有する項目名を対応付けて記憶することができる。
【０２０５】
また、データ処理装置１００によれば、複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定することができる。そして、データ処理装置１００によれば、第１の区画のそれぞれの入力領域を選択することができる。これにより、データ処理装置１００は、第１の区画のそれぞれの入力領域に入力されたデータに文字列を対応付けて記憶することができる。
【０２０６】
なお、本実施の形態で説明したデータ処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２０７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２０８】
（付記１）コンピュータに、
上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択し、
選択した前記何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定し、
特定した前記第１の入力領域から前記一方の方向に登場する一又は複数の未入力の入力領域から、上方向および左方向の内、前記一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定し、
前記第１の入力領域に入力された文字列と、特定した前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
処理を実行させることを特徴とするデータ処理プログラム。
【０２０９】
（付記２）前記コンピュータに、
前記一方の方向が上方向である場合、前記第２の入力領域から、下方向に辿って登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する、処理を実行させ、
前記記憶する処理は、
左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合に、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする付記１に記載のデータ処理プログラム。
【０２１０】
（付記３）前記コンピュータに、
前記一方の方向が上方向である場合、前記第２の入力領域から左方向または右方向に登場する文字列が入力された入力領域から下方向に登場する未入力の入力領域から、左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する、処理を実行させ、
前記記憶する処理は、
左方向、右方向、および下方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合に、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする付記１または２に記載のデータ処理プログラム。
【０２１１】
（付記４）前記記憶する処理は、
左方向、右方向、および下方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合に、前記第１の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする付記２または３に記載のデータ処理プログラム。
【０２１２】
（付記５）前記コンピュータに、
前記一方の方向が左方向である場合、前記第２の入力領域から右方向に辿って登場する未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する、処理を実行させ、
前記記憶する処理は、
上方向、下方向、および右方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合に、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする付記１〜４のいずれか一つに記載のデータ処理プログラム。
【０２１３】
（付記６）前記コンピュータに、
前記一方の方向が左方向である場合、前記第２の入力領域から上方向または下方向に登場する文字列が入力された入力領域から右方向に登場する未入力の入力領域から、上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場するか否かを判定する、処理を実行させ、
前記記憶する処理は、
上方向、下方向、および右方向の少なくとも何れかに、文字列が入力された入力領域が登場しないと判定した場合に、前記第１の入力領域に入力された文字列と、前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする付記１〜５のいずれか一つに記載のデータ処理プログラム。
【０２１４】
（付記７）前記記憶する処理は、
上方向、下方向、および右方向のそれぞれに、文字列が入力された入力領域が登場すると判定した場合に、前記第１の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
ことを特徴とする付記５または６に記載のデータ処理プログラム。
【０２１５】
（付記８）前記コンピュータに、
前記第１の入力領域から前記一方の方向に登場する、文字列が入力された第３の入力領域を特定する、処理を実行させ、
前記記憶する処理は、さらに、特定した前記第３の入力領域に入力された文字列を、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
処理を実行させることを特徴とする付記１〜７のいずれか一つに記載のデータ処理プログラム。
【０２１６】
（付記９）前記コンピュータに、
前記複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定し、
特定した前記第１の区画から前記一方の方向に、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第２の区画が出現するか否かを判定し、
前記第２の区画が出現すると判定した場合に、前記第１の区画の何れかの入力領域から前記一方の方向に辿って出現する、前記第２の区画の何れかの入力領域に入力されたデータに対応付けて記憶された文字列を、前記第１の区画の何れかの入力領域に入力されたデータに対応付けて記憶する、処理を実行させる、
ことを特徴とする付記１〜８のいずれか一つに記載のデータ処理プログラム。
【０２１７】
（付記１０）前記コンピュータに、
前記複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定し、
特定した前記第１の区画から前記一方の方向に、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第２の区画が出現するか否かを判定する、処理を実行させ、
前記選択する処理は、
前記第２の区画が出現すると判定した場合に、前記第１の区画の何れかの入力領域を選択し、
前記特定する処理は、
前記第２の区画から前記一方の方向に配置された複数の入力領域、および前記第２の区画から前記一方の方向に配置された複数の入力領域から前記一方の方向に直交する方向に配置された複数の入力領域の内、選択した前記何れかの入力領域から、前記一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定する、
ことを特徴とする付記１〜８のいずれか一つに記載のデータ処理プログラム。
【０２１８】
（付記１１）前記コンピュータに、
前記複数の入力領域の内、データが入力された複数の入力領域が上下方向および左右方向に並べて配置された第１の区画を特定する、処理を実行させ、
前記選択する処理は、
前記第１の区画のそれぞれの入力領域を選択する、
ことを特徴とする付記８〜１０のいずれか一つに記載のデータ処理プログラム。
【０２１９】
（付記１２）コンピュータが、
上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択し、
選択した前記何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定し、
特定した前記第１の入力領域から前記一方の方向に登場する一又は複数の未入力の入力領域から、上方向および左方向の内、前記一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定し、
前記第１の入力領域に入力された文字列と、特定した前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
処理を実行することを特徴とするデータ処理方法。
【０２２０】
（付記１３）上下方向および左右方向に並べて配置された複数の入力領域の内、データが入力された入力領域の何れかの入力領域を選択し、
選択した前記何れかの入力領域から、上方向および左方向の内、何れか一方の方向に辿って最初に登場する、文字列が入力された第１の入力領域を特定し、
特定した前記第１の入力領域から前記一方の方向に登場する一又は複数の未入力の入力領域から、上方向および左方向の内、前記一方の方向とは異なる他方の方向に辿って最初に登場する、文字列が入力された第２の入力領域を特定し、
前記第１の入力領域に入力された文字列と、特定した前記第２の入力領域に入力された文字列とを、前記何れかの入力領域に入力されたデータに対応付けて記憶する、
制御部を有することを特徴とするデータ処理装置。
【符号の説明】
【０２２１】
１００  データ処理装置
３０１  取得部
３０２  第１の特定部
３０３  選択部
３０４  第２の特定部
３０５  判定部
３０６  記憶部
【図１】
0006592916.tif 000002
【図２】
0006592916.tif 000003
【図３】
0006592916.tif 000004
【図４】
0006592916.tif 000005
【図５】
0006592916.tif 000006
【図６】
0006592916.tif 000007
【図７】
0006592916.tif 000008
【図８】
0006592916.tif 000009
【図９】
0006592916.tif 000010
【図１０】
0006592916.tif 000011
【図１１】
0006592916.tif 000012
【図１２】
0006592916.tif 000013
【図１３】
0006592916.tif 000014
【図１４】
0006592916.tif 000015
【図１５】
0006592916.tif 000016
【図１６】
0006592916.tif 000017
【図１７】
0006592916.tif 000018