(57)【要約】  項目Ｋ１〜Ｋ４が昇順にソートされている。各項目Ｋ１〜Ｋ４のＸ座標値を、それぞれｘ１〜ｘ４とする。列幅は、以下のように調整される。・列Ａ幅：Ｗａ＝［０，ｘ１−１］・列Ｂ幅：Ｗｂ＝［ｘ１，ｘ２−１］・列Ｃ幅：Ｗｃ＝［ｘ２，ｘ２＋ＷＳ］・列Ｄ幅：Ｗｄ＝［ｘ２＋ＷＳ＋１，ｘ３−１］・列Ｅ幅：Ｗｅ＝［ｘ３，ｘ３＋ＷＳ］  なお、項目Ｋ４において、［ｘ３，ｘ４］間の距離が丸め幅ΔＷ以下であるため、項目Ｋ３，Ｋ４は同一列（列Ｅ）となる。・列Ｆ幅：Ｗｆ＝［ｘ３＋ＷＳ＋１，ｘ５］
2009001462.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段、
前記項目群の列方向の座標値を昇順にソートするソート手段、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定手段、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段、
として機能させることを特徴とするスプレッドシート生成プログラム。
【請求項２】
前記コンピュータを、
前記距離が基準列幅より大きい所定の列幅以上であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記列幅を決定することを特徴とする請求項１に記載のスプレッドシート生成プログラム。
【請求項３】
前記決定手段は、
前記判定手段によって前記所定の列幅以上であると判定された場合、前記セルの列幅を前記基準列幅に決定することを特徴とする請求項２に記載のスプレッドシート生成プログラム。
【請求項４】
前記決定手段は、
前記判定手段によって前記所定の列幅以上でないと判定された場合、前記セルの列幅を前記距離に決定することを特徴とする請求項２に記載のスプレッドシート生成プログラム。
【請求項５】
前記コンピュータを、
前記距離が基準列幅より小さい丸め幅以下であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記列幅を決定することを特徴とする請求項１に記載のスプレッドシート生成プログラム。
【請求項６】
前記決定手段は、
前記判定手段によって前記丸め幅以下であると判定された場合、前記セルの列幅を決定しないことを特徴とする請求項５に記載のスプレッドシート生成プログラム。
【請求項７】
前記決定手段は、
前記判定手段によって前記丸め幅以下でないと判定された場合、前記セルの列幅を前記距離に決定することを特徴とする請求項５に記載のスプレッドシート生成プログラム。
【請求項８】
コンピュータを、
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段、
前記項目群の行方向の座標値を昇順にソートするソート手段、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定手段、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段、
として機能させることを特徴とするスプレッドシート生成プログラム。
【請求項９】
前記コンピュータを、
前記距離が基準行高さより大きい所定の行高さ以上であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記行高さを決定することを特徴とする請求項８に記載のスプレッドシート生成プログラム。
【請求項１０】
前記決定手段は、
前記判定手段によって前記所定の行高さ以上であると判定された場合、前記セルの行高さを前記基準行高さに決定することを特徴とする請求項９に記載のスプレッドシート生成プログラム。
【請求項１１】
前記決定手段は、
前記判定手段によって前記所定の行高さ以上でないと判定された場合、前記セルの行高さを前記距離に決定することを特徴とする請求項９に記載のスプレッドシート生成プログラム。
【請求項１２】
前記コンピュータを、
前記距離が基準行高さより小さい丸め高さ以下であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記行高さを決定することを特徴とする請求項８に記載のスプレッドシート生成プログラム。
【請求項１３】
前記決定手段は、
前記判定手段によって前記丸め高さ以下であると判定された場合、前記セルの行高さを決定しないことを特徴とする請求項１２に記載のスプレッドシート生成プログラム。
【請求項１４】
前記決定手段は、
前記判定手段によって前記丸め高さ以下でないと判定された場合、前記セルの行高さを前記距離に決定することを特徴とする請求項１２に記載のスプレッドシート生成プログラム。
【請求項１５】
前記取得手段は、
前記項目の項目名に関するデータ列を取得し、
前記出力手段は、
前記特定手段によって特定されたセルに前記項目および当該項目の項目名を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することを特徴とする請求項１または２に記載のスプレッドシート生成プログラム。
【請求項１６】
前記取得手段は、
前記項目に関するフォーマットを定義したフォーマット定義情報を取得し、
前記出力手段は、
前記特定手段によって特定されたセルに前記項目、当該項目の項目名、および前記フォーマット定義情報を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することを特徴とする請求項１５に記載のスプレッドシート生成プログラム。
【請求項１７】
前記出力手段は、
前記帳票のレイアウトに関するスプレッドシートと前記項目名に関するスプレッドシートとを含むファイルを出力することを特徴とする請求項１５または１６に記載のスプレッドシート生成プログラム。
【請求項１８】
前記出力ファイルは、同一の項目について、前記帳票のレイアウトに関するスプレッドシートのセルと前記項目名に関するスプレッドシートのセルとが関連付けられていることを特徴とする請求項１７に記載のスプレッドシート生成プログラム。
【請求項１９】
請求項１〜１８のいずれか一つに記載のスプレッドシート生成プログラムを記録したコンピュータに読み取り可能な記録媒体。
【請求項２０】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段と、
前記項目群の列方向の座標値を昇順にソートするソート手段と、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定手段と、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段と、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段と、
を備えることを特徴とするスプレッドシート生成装置。
【請求項２１】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段と、
前記項目群の行方向の座標値を昇順にソートするソート手段と、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定手段と、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段と、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段と、
を備えることを特徴とするスプレッドシート生成装置。
【請求項２２】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得工程と、
前記項目群の列方向の座標値を昇順にソートするソート工程と、
前記ソート工程によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定工程と、
前記取得工程によって取得されたレイアウト位置に関する情報に基づいて、前記決定工程によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定工程と、
前記特定工程によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力工程と、
を含んだことを特徴とするスプレッドシート生成方法。
【請求項２３】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得工程と、
前記項目群の行方向の座標値を昇順にソートするソート工程と、
前記ソート工程によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定工程と、
前記取得工程によって取得されたレイアウト位置に関する情報に基づいて、前記決定工程によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定工程と、
前記特定工程によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力工程と、
を含んだことを特徴とするスプレッドシート生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、帳票、名刺、管理表などのスプレッドシートを自動生成するスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法に関するものである。
【背景技術】
【０００２】
従来、印刷結果物の中のデータを集計やグラフなどに２次利用したくても、手間と時間がかかる。従来の技術では、印刷結果物をスキャナで読み込み、ＯＣＲソフトでＰＤＦ形式やテキスト形式などに変換してから、集計やグラフで２次利用をするために、さらに表計算ソフトや文書ソフトの形式に手動で変換する方法が一般的である。スプレッドシート内のセルの幅とセル高さ、セル結合の自動生成する技術も開示されている（たとえば、下記特許文献１を参照。）。【０００３】
【特許文献１】特開２００２−７９５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来の技術では、印刷結果物の中のデータを２次利用するためには「データの抽出」、「データの変換」、「他のソフトへの入力」などの変換作業が発生していた。また、印刷結果物が大量の場合、印刷用アプリケーションとは別に、データベースなどからデータを抽出して、集計するアプリケーションを開発する必要があった。【０００５】
また、上述した特許文献１では、矩形ごとにセルを自動生成するため、矩形のサイズが大きくなりすぎてもそのままセルとして生成されることとなり、印刷結果物を正確に再現することができなかった。一方、矩形のサイズが小さすぎてもそのままセルとなるため、編集では使用しない無駄なセルが生成されてしまうこととなる。【０００６】
本発明は、上記に鑑みてなされたものであって、印刷イメージを保持しながらも、項目位置と項目の占める領域からなるべく無駄な列が発生しないように、セルの幅や高さを調整したセル情報を自動的に生成することで、２次利用性の高いスプレッドシートを自動生成することができるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、この発明のスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法は、帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得し、前記項目群の列方向（または行方向）の座標値を昇順にソートし、ソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅（または行高さ）を項目ごとに決定し、レイアウト位置に関する情報に基づいて、列幅（または行高さ）が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定し、特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することを特徴とする。【０００８】
また、上記発明において、前記距離が基準列幅（または基準行高さ）より大きい所定の列幅（または行高さ）以上であるか否かを判定し、判定結果に基づいて前記列幅（または行高さ）を決定することとしてもよい。【０００９】
また、上記発明において、前記所定の列幅（または行高さ）以上であると判定された場合、前記セルの列幅（または行高さ）を前記基準列幅に決定することとしてもよい。【００１０】
また、上記発明において、前記所定の列幅（または行高さ）以上でないと判定された場合、前記セルの列幅（または行高さ）を前記距離に決定することとしてもよい。【００１１】
また、上記発明において、前記距離が基準列幅（または基準行高さ）より小さい丸め幅（または丸め高さ）以下であるか否かを判定し、判定結果に基づいて前記列幅（または行高さ）を決定することとしてもよい。【００１２】
また、上記発明において、前記丸め幅（または丸め高さ）以下であると判定された場合、前記セルの列幅（または行高さ）を決定しないこととしてもよい。【００１３】
また、上記発明において、前記丸め幅（または丸め高さ）以下でないと判定された場合、前記セルの列幅（または行高さ）を前記距離に決定することとしてもよい。【００１４】
また、上記発明において、前記項目の項目名に関するデータ列を取得し、特定されたセルに前記項目および当該項目の項目名を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することとしてもよい。【００１５】
また、上記発明において、前記項目に関するフォーマットを定義したフォーマット定義情報を取得し、特定されたセルに前記項目、当該項目の項目名、および前記フォーマット定義情報を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することとしてもよい。【００１６】
また、上記発明において、前記帳票のレイアウトに関するスプレッドシートと前記項目名に関するスプレッドシートとを含むファイルを出力することとしてもよい。【００１７】
また、上記発明において、前記出力ファイルは、同一の項目について、前記帳票のレイアウトに関するスプレッドシートのセルと前記項目名に関するスプレッドシートのセルとが関連付けられていることとしてもよい。
【発明の効果】
【００１８】
本発明にかかるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法は、印刷イメージを保持しながらも、項目位置と項目の占める領域からなるべく無駄な列が発生しないように、セルの幅や高さを調整したセル情報を自動的に生成することで、２次利用性の高いスプレッドシートを自動生成することができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】図１は、帳票の一例を示す説明図である。
【図２】図２は、図１に示した帳票のスプレッドシート（レイアウト用シート）を示す説明図である。
【図３】図３は、図１に示した帳票のスプレッドシート（データ用シート）を示す説明図である。
【図４】図４は、この発明の実施の形態にかかるスプレッドシート生成装置のシステム構成を示す説明図である。
【図５】図５は、帳票定義ツール使用時の表示画面に表示された帳票定義体を示す説明図である。
【図６】図６は、フォーマット定義情報を示す説明図である。
【図７】図７は、項目情報のデータ構造を示す説明図である。
【図８】図８は、項目情報の一例を示す説明図である。
【図９】図９は、装飾情報のデータ構造を示す説明図である。
【図１０】図１０は、セル制御情報を示す説明図である。
【図１１】図１１は、この発明の実施の形態にかかるスプレッドシート生成装置のハードウェア構成を示す説明図である。
【図１２】図１２は、セル定義情報を示す説明図である。
【図１３】図１３は、Ｘ座標値を昇順にソートした項目を示す説明図である。
【図１４】図１４は、セルの列幅調整を示す説明図である。
【図１５】図１５は、この発明の実施の形態にかかるスプレッドシート生成処理手順を示すフローチャートである。
【図１６】図１６は、図１５に示したセル定義情報生成処理の具体的な処理手順を示すフローチャートである。
【図１７】図１７は、図１６に示した列幅算出処理の具体的な処理手順を示すフローチャートである。
【図１８】図１８は、図１６に示した行高さ算出処理の具体的な処理手順を示すフローチャートである。
【図１９】図１９は、図１５に示したスプレッドシート出力処理の具体的な処理手順を示すフローチャートである。
【符号の説明】
【００２０】
４００  スプレッドシート生成装置
４０１  入力データ群
４０２  フォーマット定義情報
４１０  業務アプリケーション
４２０  帳簿定義ツール
４３０  セル定義情報生成部
４４０  スプレッドシート出力部
４５０  出力ファイル
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明にかかるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法の好適な実施の形態を詳細に説明する。【００２２】
（本発明の概要）
図１は、帳票の一例を示す説明図であり、図２および図３は、図１に示した帳票のスプレッドシートを示す説明図である。本発明では、図１に示した紙媒体などの帳票１００のスプレッドシートを印刷したい場合に、図１に示した「納品書」、「２００７年６月２１日」、・・・といった項目名の文字列とそのレイアウト位置をコンピュータに別々に与えることにより、図２および図３に示したスプレッドシート群からなる出力ファイルを自動生成する技術である。この出力ファイルを印刷することで、図１に示した帳票１００が印刷出力される。【００２３】
図２および図３に示したスプレッドシート２００，３０１〜３０４は、具体的には、市販の表計算ソフトの出力ファイルで構成される。たとえば、マイクロソフト社のエクセルを用いた場合、図２および図３に示したスプレッドシート２００，３０１〜３０４は、その出力ファイル内のシートの一つとして出力される。すなわち、出力ファイルは、エクセルでいうブックに相当する。【００２４】
なお、図２および図３中、上端のアルファベット列は、列を特定する列番号であり、左端の数字列は、行を特定する行番号である。したがって、以降、「セルＡ３」のように、列のアルファベットと行の数字との組み合わせによりセルを特定する。【００２５】
本明細書では、図２に示したスプレッドシート２００を「レイアウト用シート」と呼び、図３に示したスプレッドシート３０１〜３０４を「データ用シート」と呼ぶ。データ用シート３０１〜３０４は、パーティションごとに複数シートに分割されている。パーティションとは、帳票１００を区画する領域である。図１を参照すると、Ｐ１〜Ｐ４という４つのパーティションによって帳票１００が区画されることとなる。【００２６】
図３中、符号３０１がパーティションＰ１のデータ用シートであり、符号３０２がパーティションＰ２のデータ用シートであり、符号３０３がパーティションＰ３のデータ用シートであり、符号３０４がパーティションＰ４のデータ用シートである。なお、ここでは、パーティションごとにデータ用シート３０１〜３０４を分割したが、複数のパーティション内のデータを単一のデータ用シートに記述することとしてもよい。【００２７】
また、レイアウト用シート２００とデータ用シート３０１〜３０４とは、同一項目でリンクされている。たとえば、図２に示した「納品書」という文字列が記述されているセルＦ２と図３に示したパーティションＰ１のデータ用シート３０１の「納品書」という文字列が記述されているセルＢ２とは、リンクされている。したがって、ユーザは、レイアウト用シート２００を編集したい場合に、データ用シート３０１〜３０４を編集すれば、レイアウト用シート２００を編集しなくても反映されることとなる。【００２８】
（システム構成）
つぎに、この発明の実施の形態にかかるスプレッドシート生成装置のシステム構成について説明する。図４は、この発明の実施の形態にかかるスプレッドシート生成装置のシステム構成を示す説明図である。【００２９】
図４において、スプレッドシート生成装置４００は、業務アプリケーション４１０から出力される入力データ群４０１と、帳票定義ツール４２０から出力されるフォーマット定義情報４０２とを取り込むことにより、出力ファイル４５０を生成する。この出力ファイル４５０は、図２に示したレイアウト用シート２００と図３に示したデータ用シート３０１〜３０４とを１ブックに纏めた出力ファイルである。【００３０】
ここで、入力データ群４０１について説明する。入力データ群４０１とは、図３に示したデータ用シート３０１〜３０４内の文字列や数字などのデータの集合に相当するデータであり、具体的には、ＣＳＶ形式のデータ列として与えることができる。【００３１】
たとえば、図１に示したパーティションＰ１に関する入力データ列の場合、行番号および列番号の若いセルから順に、「納品書，２００７年６月２１日，神奈川県川崎市中原区・・・，○○電気，様，△△△株式会社，東京都港区新橋・・・・・，電話：，９９−９９９９−９９９９，ＦＡＸ：，９９−９９９９−９９９８」といったカンマで区切られたデータ列となる。なお、入力データ群４０１は、図３に示したデータ用シート３０１〜３０４と同一のスプレッドシートであってもよい。【００３２】
また、フォーマット定義情報４０２は、ユーザが帳票定義ツール４２０を利用することで生成される。図５は、帳票定義ツール４２０使用時の表示画面に表示された帳票定義体を示す説明図である。図５に示した帳票定義体５００において、内部の矩形は項目であり、その中の項目名はユーザが入力するか、あらかじめ帳票定義ツール４２０で定義されている。【００３３】
ユーザは各項目を縮小または拡大したり、移動したりして、項目のレイアウト位置を決定する。パーティションＰ１〜Ｐ４もユーザ操作または自動的に決定される。入力データ群４０１は、この帳票定義体５００の項目を参照してユーザが入力することで得られることとなる。【００３４】
（フォーマット定義情報４０２）
帳票定義体５００が決定されると、帳票定義ツール４２０では、その帳票定義体５００からフォーマット定義情報４０２を生成する。図６は、フォーマット定義情報４０２を示す説明図である。図６において、フォーマット定義情報４０２は、図５の帳票定義体５００で示した項目の項目名ごとに、項目情報と装飾情報とを有する。【００３５】
図７は、項目情報のデータ構造を示す説明図である。図７において、項目名は項目を識別する文字列である。たとえば、図５に示した「タイトル」、「年月日」、「宛先」である。位置情報とは、図５に示した帳票定義体５００の左上頂点を原点とした場合のＸＹ座標系での座標である。項目領域長とは、図５に示した項目のＸ軸方向の長さである。データ長とは、項目内の文字列／数値の長さ（バイト単位）である。位置情報とデータ長によりデータ列内の項目名を検出することができる。データ形式とは、項目名が文字列または数値のいずれの形式であるかを示す。【００３６】
フォント情報とは、項目名のフォント名やサイズをあらわす情報である。配置情報とは、右寄せ、中央、左寄せの中から選択された情報である。編集形式とは、項目名のデータ形式に応じたスプレッドシートの書式である。このスプレッドシートの書式で表示されることとなる。レコード内位置とは、レコードとなる１入力データ列の先頭からのバイト数である。なお、図８は、項目情報の一例を示す説明図である。【００３７】
また、図９は、装飾情報のデータ構造を示す説明図である。装飾情報とは、項目に対応するセルに施される情報であり、装飾の種別（罫線／枠／網掛け）やその位置情報または範囲をあらわす情報である。【００３８】
また、フォーマット定義情報４０２として、セル制御情報も与えられる。図１０は、セル制御情報を示す説明図である。セル制御情報とは出力となるスプレッドシートの基本セル幅、基本セル高さ、丸め幅、および丸め高さを規定する情報である。ここで、丸め幅とは、列幅に関してセルをあらたに生成しないための上限値である。同様に、丸め高さとは、行高さに関してセルをあらたに生成しないための上限値である。丸め幅および丸め高さの詳細については後述する。【００３９】
（スプレッドシート生成装置４００のハードウェア構成）
つぎに、図４に示したスプレッドシート生成装置４００のハードウェア構成について説明する。図１１は、この発明の実施の形態にかかるスプレッドシート生成装置４００のハードウェア構成を示す説明図である。【００４０】
図１１において、スプレッドシート生成装置４００は、コンピュータ本体１１１０と、入力装置１１２０と、出力装置１１３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク１１４０に接続可能である。【００４１】
コンピュータ本体１１１０は、ＣＰＵ，記憶装置，インターフェースを有する。ＣＰＵは、スプレッドシート生成装置４００の全体の制御を司る。記憶装置は、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１１，フラッシュメモリから構成される。ＲＡＭはＣＰＵのワークエリアとして使用される。【００４２】
また、記憶装置には各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク１１１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク１１１１およびフラッシュメモリはコンピュータ本体１１１０に対し着脱自在である。インターフェースは、入力装置１１２０からの入力、出力装置１１３０への出力、ネットワーク１１４０に対する送受信の制御をおこなう。【００４３】
また、入力装置１１２０としては、キーボード１１２１、マウス１１２２、スキャナ１１２３などがある。キーボード１１２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス１１２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ１１２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体１１１０内の記憶装置に格納される。なお、スキャナ１１２３にＯＣＲ機能を持たせてもよい。【００４４】
また、出力装置１１３０としては、ディスプレイ１１３１、プリンタ１１３２、スピーカ１１３３などがある。ディスプレイ１１３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、プリンタ１１３２は、画像データや文書データを印刷する。またスピーカ１１３３は、効果音や読み上げ音などの音声を出力する。【００４５】
つぎに、図４に示したスプレッドシート生成装置４００の機能について説明する。スプレッドシート生成装置４００は、セル定義情報生成部４３０とスプレッドシート出力部４４０とを有する。まず、セル定義情報生成部４３０について説明する。セル定義情報とは、帳票１００上の項目位置とスプレッドシートのセル位置を対応づけるために使用する定義情報である。【００４６】
図１２は、セル定義情報を示す説明図である。セル定義情報１２００としては、スプレッドシート内の各セルＡ１〜Ｋ１７のセル幅、セル高さ、パーティションの範囲などが定義されている。パーティションＰ１の場合は、［１，１０］のように、行番号でその範囲を規定する。セル定義情報１２００は、フォーマット定義情報４０２の項目位置などに基づいて自動生成される。【００４７】
このセル定義情報生成部４３０では、帳票１００のレイアウトを維持したまま、データの再利用性を考慮したセルを自動生成する機能である。すなわち、スプレッドシートへの出力を意識し、できる限り、無駄な列や行を作成しないように考慮する。【００４８】
このための仕組みとして、セル制御情報（基本列幅、基本行高さ、および丸め幅、丸め高さ）をもとに、セル分割の制御を行い、同じような位置にあるデータは、同一の列および行にまとめることを実現している。また、それぞれの値はユーザによるカスタマイズが可能であるため、帳票１００ごとに最適なセル幅、セル高さで設計することができる。【００４９】
この処理は、まず、全項目の位置情報、すなわち、フォーマット定義情報４０２の項目情報内に含まれている項目の位置情報を用いる。列幅については位置情報のＸ座標値を昇順にソートする。図１３は、Ｘ座標値を昇順にソートした項目を示す説明図である。【００５０】
そして、ソート後の先頭の項目のＸ座標から順にチェックし、次の項目の開始位置までの距離を計算する。その距離が（基本列幅×２）未満の場合は、計算した距離を列幅とする。一方、（基本列幅×２）以上の場合は、基本の列幅分だけ移動し、（基本の列幅×２）未満になった時点で、列幅とする。また、項目位置のズレが丸め幅の範囲内であれば、調整せず、無駄な列は作成しない。このようにして、項目ごとに、セルの列幅を算出する。【００５１】
ここで、具体例を示す。図１４は、セルの列幅調整を示す説明図である。図１４では、項目Ｋ１〜Ｋ４が昇順にソートされている。各項目Ｋ１〜Ｋ４のＸ座標値を、それぞれｘ１〜ｘ４とする。また、基本セル幅ＷＳ＝９６０ドット、基本セル高さＨＳ＝２４０ドット、丸め幅ΔＷ＝１４４ドット、丸め高さΔＨ＝１４４ドットとする。列幅は、以下のように調整される。なお、［，］は座標の区間をあらわす。【００５２】
・列Ａ幅：Ｗａ＝［０，ｘ１−１］
・列Ｂ幅：Ｗｂ＝［ｘ１，ｘ２−１］
・列Ｃ幅：Ｗｃ＝［ｘ２，ｘ２＋ＷＳ］
・列Ｄ幅：Ｗｄ＝［ｘ２＋ＷＳ＋１，ｘ３−１］
・列Ｅ幅：Ｗｅ＝［ｘ３，ｘ３＋ＷＳ］
なお、項目Ｋ４において、［ｘ３，ｘ４］間の距離が丸め幅ΔＷ以下であるため、項目Ｋ３，Ｋ４は同一列（列Ｅ）となる。
・列Ｆ幅：Ｗｆ＝［ｘ３＋ＷＳ＋１，ｘ５］
ｘ５は帳票定義体５００の終点Ｘ座標値である。【００５３】
行高さについても同様である。まず、位置情報のＹ座標値を昇順にソートする。そして、ソート後の先頭の項目のＹ座標から順にチェックし、次の項目の開始位置までの距離を計算する。その距離が（基本行高さ×２）未満の場合は、計算した距離を行高さとする。一方、（基本行高さ×２）以上の場合は、基本の行高さ分だけ移動し、（基本の行高さ×２）未満になった時点で、行高さとする。また、項目位置のズレが丸め幅の範囲内であれば、調整せず、無駄な行は作成しない。このようにして、項目ごとに、セルの行高さを算出する。【００５４】
つぎに、スプレッドシート出力部４４０について説明する。スプレッドシート出力部４４０とは、データ用シート３０１〜３０４とレイアウト用シート２００とを別々に出力する機能である。シート出力部４４０では、セル定義情報１２００を用いて、項目の位置情報をセルに変換する。【００５５】
ある項目のセル位置は、セル定義情報１２００の列幅や行高さによって決定される。ここで、列幅に注目して説明する。セル定義情報１２００の列Ａ〜列Ｄの列幅が列Ａから順に、１４４０ドット，１０２０ドット，１７６０ドット，２４００ドットとする。ある項目の位置情報のＸ座標値を５０００とした場合、この５０００と列Ａの列幅１４４０ドットとを比較する。【００５６】
Ｘ座標値の方が大きいと、次の列である列Ｂの列幅１０２０ドットを加算して、Ｘ座標値と比較する。列Ａおよび列Ｂの合計幅は２４６０ドットなので、さらに、列Ｃの列幅１７６０ドットを加算してＸ座標値と比較する。列Ａ〜列Ｃの合計幅は４２２０ドットなので、さらに、列Ｄの列幅２４００ドットを加算する。列Ａ〜列Ｄの合計幅は６６２０ドットとなり、Ｘ座標値以上となるため、この項目は列Ｄに配置されることとなる。行高さについても同様な処理を施すことにより、項目に対応するレイアウト用シート２００のセル位置が決定される。【００５７】
また、スプレッドシート出力部４４０では、データ用シート３０１〜３０４における各データのセル位置と、レイアウト用シート２００における項目のセル位置とのリンクを生成する。そして、最終的に、データ用シート３０１〜３０４とレイアウト用シート２００とをまとめた出力ファイル４５０を生成・出力する。【００５８】
（スプレッドシート生成処理手順）
つぎに、この発明の実施の形態にかかるスプレッドシート生成処理手順について説明する。図１５は、この発明の実施の形態にかかるスプレッドシート生成処理手順を示すフローチャートである。図１５において、まず、業務アプリケーション４１０から入力データ群４０１を取得するとともに、帳票定義ツール４２０からフォーマット定義情報４０２を取得する（ステップＳ１５０１）。【００５９】
つぎに、セル定義情報生成部４３０によりセル定義情報生成処理（ステップＳ１５０２）を実行し、最後に、スプレッドシート出力部４４０によりスプレッドシート出力処理（ステップＳ１５０３）を実行する。【００６０】
つぎに、図１５に示したセル定義情報生成処理の具体的な処理手順について説明する。図１６は、図１５に示したセル定義情報生成処理の具体的な処理手順を示すフローチャートである。図１６において、まず、全項目の位置情報をフォーマット定義情報４０２から抽出する（ステップＳ１６０１）。【００６１】
つぎに、列幅算出処理を実行して、項目の列幅を算出する（ステップＳ１６０２）。そして、行高さ算出処理を実行して項目の行高さを算出する（ステップＳ１６０３）。これにより、項目に対応するセルの列幅および行高さが設定される。そして、これらをまとめて、セル定義情報１２００として出力する（ステップＳ１６０４）。【００６２】
つぎに、図１６に示した列幅算出処理の具体的な処理手順について説明する。図１７は、図１６に示した列幅算出処理の具体的な処理手順を示すフローチャートである。図１７において、まず、抽出された全項目のＸ座標値を昇順にソートする（ステップＳ１７０１）。つぎに、ｉ＝１とする（ステップＳ１７０２）。ｉはＸ座標値の昇順番号である。【００６３】
そして、ｉ番目の列幅ｗｉ（＝ｘｉ−ｘｉ−１）を算出する（ステップＳ１７０３）。なお、ｉ＝０は帳票定義体５００の原点座標を示す。そして、ｉ番目の列幅ｗｉが丸め幅ΔＷ以下であるか否かを判断する（ステップＳ１７０４）。丸め幅ΔＷ以下である場合（ステップＳ１７０４：Ｙｅｓ）、ステップＳ１７０８に移行する。【００６４】
一方、丸め幅ΔＷ以下でない場合（ステップＳ１７０４：Ｎｏ）、ｉ番目の列幅ｗｉが基本列幅ＷＳの２倍以上であるか否かを判断する（ステップＳ１７０５）。基本列幅ＷＳの２倍以上でない場合（ステップＳ１７０５：Ｎｏ）、ｉ番目の列幅ｗｉを算出する（ステップＳ１７０６）。具体的には、ｉ番目の列幅ｗｉ＝［ｘｉ＋ｗｉ−１＋１，ｘｉ−１−１］とする。そして、ステップＳ１７０８に移行する。【００６５】
一方、基本列幅ＷＳの２倍以上である場合（ステップＳ１７０５：Ｙｅｓ）、ｉ番目の列幅ｗｉを基本列幅ＷＳとする（ステップＳ１７０７）。そして、ステップＳ１７０８に移行する。ステップＳ１７０８では、ｉをインクリメントして（ステップＳ１７０８）、ｉ＝ｎであるか否かを判断する（ステップＳ１７０９）。ｎは項目総数である。ｉ＝ｎでない場合（ステップＳ１７０９：Ｎｏ）、ステップＳ１７０４に戻る。一方、ｉ＝ｎである場合（ステップＳ１７０９：Ｙｅｓ）、ステップＳ１６０３に移行する。【００６６】
つぎに、図１６に示した行高さ算出処理の具体的な処理手順について説明する。図１８は、図１６に示した行高さ算出処理の具体的な処理手順を示すフローチャートである。図１８において、まず、抽出された全項目のＹ座標値を昇順にソートする（ステップＳ１８０１）。つぎに、ｉ＝１とする（ステップＳ１８０２）。ｉはＹ座標値の昇順番号である。【００６７】
そして、ｉ番目の行高さｈｉ（＝ｙｉ−ｙｉ−１）を算出する（ステップＳ１８０３）。なお、ｉ＝０は帳票定義体５００の原点座標を示す。そして、ｉ番目の行高さｈｉが丸め高さΔＨ以下であるか否かを判断する（ステップＳ１８０４）。丸め高さΔＨ以下である場合（ステップＳ１８０４：Ｙｅｓ）、ステップＳ１８０８に移行する。【００６８】
一方、丸め高さΔＨ以下でない場合（ステップＳ１８０４：Ｎｏ）、ｉ番目の行高さｈｉが基本行高さＨＳの２倍以上であるか否かを判断する（ステップＳ１８０５）。基本行高さＨＳの２倍以上でない場合（ステップＳ１８０５：Ｎｏ）、ｉ番目の行高さｈｉを算出する（ステップＳ１８０６）。具体的には、ｉ番目の行高さｈｉ＝［ｙｉ＋ｈｉ−１＋１，ｙｉ−１−１］とする。そして、ステップＳ１８０８に移行する。【００６９】
一方、基本行高さＨＳの２倍以上である場合（ステップＳ１８０５：Ｙｅｓ）、ｉ番目の行高さｈｉを基本行高さＨＳとする（ステップＳ１８０７）。そして、ステップＳ１８０８に移行する。ステップＳ１８０８では、ｉをインクリメントして（ステップＳ１８０８）、ｉ＝ｎであるか否かを判断する（ステップＳ１８０９）。ｎは項目総数である。ｉ＝ｎでない場合（ステップＳ１８０９：Ｎｏ）、ステップＳ１８０４に戻る。一方、ｉ＝ｎである場合（ステップＳ１８０９：Ｙｅｓ）、ステップＳ１６０４に移行する。【００７０】
つぎに、図１５に示したスプレッドシート出力処理の具体的な処理手順について説明する。図１９は、図１５に示したスプレッドシート出力処理の具体的な処理手順を示すフローチャートである。図１９において、まず、全パーティションの処理が終了したか否かを判断する（ステップＳ１９０１）。【００７１】
終了していない場合（ステップＳ１９０１：Ｎｏ）、未処理のパーティションを選択する（ステップＳ１９０２）。選択されたパーティションについて、すべての項目を処理したか否かを判断する（ステップＳ１９０３）。処理していない場合（ステップＳ１９０３：Ｎｏ）、セル位置特定処理を実行する（ステップＳ１９０４）。【００７２】
ここで、セル位置特定処理とは、上述したように、セル定義情報１２００の列幅を列Ａから順に加算していき、項目のＸ座標値以上となる列を、その項目に該当する列とする。行についても同様に、セル定義情報１２００の行高さを行１から順に加算していき、項目のＹ座標値以上となる行を、その項目に該当する行とする。これにより、Ｘ座標値以上となった列およびＹ座標値以上となった行によりセルを特定する。【００７３】
このあと、登録処理を実行する（ステップＳ１９０５）。登録処理とは、フォーマット定義情報４０２の位置情報を手がかりとして、項目に該当する項目名（文字列／数値）をデータ列から特定し、特定された項目名の項目を、その項目のセル位置となるセルに対応付ける。これにより、たとえば、「タイトル」という項目の項目名に「納  品  書」が書き込まれ、図２に示したセルＦ２に位置することとなる。【００７４】
このあと、加工処理を実行する（ステップＳ１９０６）。ここで、加工処理とは、フォーマット定義情報４０２を参照することで、そのセルに書き込まれる項目名のフォントを決めたり、セルに網掛けを施したりする。また、数値の場合は、編集形式を参照することで、スプレッドシートの書式に適合する形式で表示することができる。このあと、ステップＳ１９０３に戻る。【００７５】
ステップＳ１９０３において、すべての項目が処理された場合（ステップＳ：１９０３Ｙｅｓ）、ステップＳ１９０１に戻る。ステップＳ１９０１において、全パーティションの処理が終了した場合（ステップＳ１９０１：Ｙｅｓ）、ステップＳ１９０７に移行する。【００７６】
ステップＳ１９０７では、スプレッドシートとしてレイアウト用シート２００（図２を参照）を生成する。また、入力データ群４０１をデータ用シート３０１〜３０４（図３を参照）として生成する。このとき、レイアウト用シート２００の項目名が記述されているセルと入力データ群４０１のデータ（すなわち項目名）とが対応付けられているため、データ用シート３０１〜３０４のデータ（項目名）が記述されているセルと、同一項目名が記述されているレイアウト用シート２００とがリンクする。【００７７】
そして、このレイアウト用シート２００とデータ用シート３０１〜３０４とをまとめたスプレッドシート群を出力する（ステップＳ１９０７）。出力形式は、たとえば、ＸＭＬ形式により圧縮保存したり、ディスプレイに表示したり、印刷出力したり、外部のコンピュータに送信することとしてもよい。【００７８】
以上説明したように、本実施の形態によれば、データ（項目名）と書式（自動生成）を分けたデータ管理をおこなうことができる。すなわち、データ変換の作業を自動化するため、印刷処理では、フォーマット定義（書式）とデータから編集処理を行い印刷していたが、本実施の形態では、データ（項目名）と書式は別々に処理する。【００７９】
データ（項目名）は、文字列、数値、日付、時刻などに分類して、データ形式に応じた値への変換を実施する。書式は、フォーマット定義（書式）に指定された形式で表示されるように書式文字列を自動的に生成した上でスプレッドシートに変換する。【００８０】
これにより、データ（項目名）を２次利用する場合やそのまま印刷結果として表示する場合にも対応できる。データ（項目名）と書式が分かれているため、２次利用でのデータ変換が不要となる。【００８１】
また、本実施の形態では、セル幅とセル高さ、セル結合を自動生成することができる。すなわち、印刷結果と同様のレイアウトを保証するため、フォーマット定義（レイアウト）の項目位置と項目の占める領域より、最適なセル幅と高さを自動的に生成することで、無駄な列や行が少ないスプレッドシートに変換する。【００８２】
データ（項目名）にはセルという概念がないため、印刷結果と同じようにセル情報を定義することは非常に困難で難しい作業となる。また、細かなセル単位で定義すると印刷位置と同じ位置に合わせることはできるが、データ（項目名）を再利用しようとした場合に無駄な列のデータが多く含まれてしまい、再利用性に問題がある。【００８３】
そこで、印刷イメージを保持しながらも、項目位置と項目の占める領域からなるべく無駄な列が発生しないように、セルの幅や高さを調整したセル情報を自動的に生成することで、データ（項目名）の２次利用性の高いスプレッドシートを自動的に生成することが可能となる。また、既存の印刷システムを利用できるため、アプリケーション開発にかかるコストと時間を削減することができる。【００８４】
さらに、本実施の形態では、データ用シート３０１〜３０４とレイアウト用シート２００を分けた文書管理を実現することができる。すなわち、データの２次利用性を高めるため、データ用シート３０１〜３０４とレイアウト用シート２００の一元化を行う。具体的には、データ（項目名）はデータ用シート３０１〜３０４にＣＳＶデータ相当の形式で出力し、印刷イメージは、レイアウト用シート２００として作成し管理する。【００８５】
レイアウト用シート２００からデータ用シート３０１〜３０４のデータを参照（リンク）することで、データ用シート３０１〜３０４を変更すると印刷イメージも変更される。したがって、データが一元管理され、複数のレイアウト用シート２００を作成してもデータ用シート３０１〜３０４の修正だけで、他のレイアウト用シート２００への修正は基本的には不要となる。したがって、管理が簡略化され、集計用とレイアウト用のどちらにも２次利用性の高いスプレッドシートを作成することができる。【００８６】
なお、本実施の形態で説明したスプレッドシート生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【００８７】
以上のように、本発明にかかるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法は、項目名のデータとレイアウトとの一元管理に有用であり、特に、エクセルなどの表計算ソフトに適している。
【図１】
2009001462.tif 000003
【図２】
2009001462.tif 000004
【図３】
2009001462.tif 000005
【図４】
2009001462.tif 000006
【図５】
2009001462.tif 000007
【図６】
2009001462.tif 000008
【図７】
2009001462.tif 000009
【図８】
2009001462.tif 000010
【図９】
2009001462.tif 000011
【図１０】
2009001462.tif 000012
【図１１】
2009001462.tif 000013
【図１２】
2009001462.tif 000014
【図１３】
2009001462.tif 000015
【図１４】
2009001462.tif 000016
【図１５】
2009001462.tif 000017
【図１６】
2009001462.tif 000018
【図１７】
2009001462.tif 000019
【図１８】
2009001462.tif 000020
【図１９】
2009001462.tif 000021
【手続補正書】
【提出日】平成21年12月4日(2009.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータを、
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段、
前記項目群の列方向の座標値を昇順にソートするソート手段、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定手段、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段、
として機能させることを特徴とするスプレッドシート生成プログラム。
【請求項２】
コンピュータを、
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段、
前記項目群の行方向の座標値を昇順にソートするソート手段、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定手段、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段、
として機能させることを特徴とするスプレッドシート生成プログラム。
【請求項３】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段と、
前記項目群の列方向の座標値を昇順にソートするソート手段と、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定手段と、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段と、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段と、
を備えることを特徴とするスプレッドシート生成装置。
【請求項４】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段と、
前記項目群の行方向の座標値を昇順にソートするソート手段と、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定手段と、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段と、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段と、
を備えることを特徴とするスプレッドシート生成装置。
【請求項５】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得工程と、
前記項目群の列方向の座標値を昇順にソートするソート工程と、
前記ソート工程によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定工程と、
前記取得工程によって取得されたレイアウト位置に関する情報に基づいて、前記決定工程によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定工程と、
前記特定工程によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力工程と、
を含んだことを特徴とするスプレッドシート生成方法。
【請求項６】
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得工程と、
前記項目群の行方向の座標値を昇順にソートするソート工程と、
前記ソート工程によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定工程と、
前記取得工程によって取得されたレイアウト位置に関する情報に基づいて、前記決定工程によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定工程と、
前記特定工程によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力工程と、
を含んだことを特徴とするスプレッドシート生成方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、帳票、名刺、管理表などのスプレッドシートを自動生成するスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法に関するものである。
【背景技術】
【０００２】
従来、印刷結果物の中のデータを集計やグラフなどに２次利用したくても、手間と時間がかかる。従来の技術では、印刷結果物をスキャナで読み込み、ＯＣＲソフトでＰＤＦ形式やテキスト形式などに変換してから、集計やグラフで２次利用をするために、さらに表計算ソフトや文書ソフトの形式に手動で変換する方法が一般的である。スプレッドシート内のセルの幅とセル高さ、セル結合の自動生成する技術も開示されている（たとえば、下記特許文献１を参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−７９５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来の技術では、印刷結果物の中のデータを２次利用するためには「データの抽出」、「データの変換」、「他のソフトへの入力」などの変換作業が発生していた。また、印刷結果物が大量の場合、印刷用アプリケーションとは別に、データベースなどからデータを抽出して、集計するアプリケーションを開発する必要があった。
【０００５】
また、上述した特許文献１では、矩形ごとにセルを自動生成するため、矩形のサイズが大きくなりすぎてもそのままセルとして生成されることとなり、印刷結果物を正確に再現することができなかった。一方、矩形のサイズが小さすぎてもそのままセルとなるため、編集では使用しない無駄なセルが生成されてしまうこととなる。
【０００６】
本発明は、上記に鑑みてなされたものであって、印刷イメージを保持しながらも、項目位置と項目の占める領域からなるべく無駄な列が発生しないように、セルの幅や高さを調整したセル情報を自動的に生成することで、２次利用性の高いスプレッドシートを自動生成することができるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、この発明のスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法は、帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得し、前記項目群の列方向（または行方向）の座標値を昇順にソートし、ソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅（または行高さ）を項目ごとに決定し、レイアウト位置に関する情報に基づいて、列幅（または行高さ）が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定し、特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することを特徴とする。
【０００８】
また、上記発明において、前記距離が基準列幅（または基準行高さ）より大きい所定の列幅（または行高さ）以上であるか否かを判定し、判定結果に基づいて前記列幅（または行高さ）を決定することとしてもよい。
【０００９】
また、上記発明において、前記所定の列幅（または行高さ）以上であると判定された場合、前記セルの列幅（または行高さ）を前記基準列幅に決定することとしてもよい。
【００１０】
また、上記発明において、前記所定の列幅（または行高さ）以上でないと判定された場合、前記セルの列幅（または行高さ）を前記距離に決定することとしてもよい。
【００１１】
また、上記発明において、前記距離が基準列幅（または基準行高さ）より小さい丸め幅（または丸め高さ）以下であるか否かを判定し、判定結果に基づいて前記列幅（または行高さ）を決定することとしてもよい。
【００１２】
また、上記発明において、前記丸め幅（または丸め高さ）以下であると判定された場合、前記セルの列幅（または行高さ）を決定しないこととしてもよい。
【００１３】
また、上記発明において、前記丸め幅（または丸め高さ）以下でないと判定された場合、前記セルの列幅（または行高さ）を前記距離に決定することとしてもよい。
【００１４】
また、上記発明において、前記項目の項目名に関するデータ列を取得し、特定されたセルに前記項目および当該項目の項目名を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することとしてもよい。
【００１５】
また、上記発明において、前記項目に関するフォーマットを定義したフォーマット定義情報を取得し、特定されたセルに前記項目、当該項目の項目名、および前記フォーマット定義情報を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することとしてもよい。
【００１６】
また、上記発明において、前記帳票のレイアウトに関するスプレッドシートと前記項目名に関するスプレッドシートとを含むファイルを出力することとしてもよい。
【００１７】
また、上記発明において、前記出力ファイルは、同一の項目について、前記帳票のレイアウトに関するスプレッドシートのセルと前記項目名に関するスプレッドシートのセルとが関連付けられていることとしてもよい。
【発明の効果】
【００１８】
本発明にかかるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法は、印刷イメージを保持しながらも、項目位置と項目の占める領域からなるべく無駄な列が発生しないように、セルの幅や高さを調整したセル情報を自動的に生成することで、２次利用性の高いスプレッドシートを自動生成することができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】帳票の一例を示す説明図である。
【図２】図１に示した帳票のスプレッドシート（レイアウト用シート）を示す説明図である。
【図３】図１に示した帳票のスプレッドシート（データ用シート）を示す説明図である。
【図４】この発明の実施の形態にかかるスプレッドシート生成装置のシステム構成を示す説明図である。
【図５】帳票定義ツール使用時の表示画面に表示された帳票定義体を示す説明図である。
【図６】フォーマット定義情報を示す説明図である。
【図７】項目情報のデータ構造を示す説明図である。
【図８】項目情報の一例を示す説明図である。
【図９】装飾情報のデータ構造を示す説明図である。
【図１０】セル制御情報を示す説明図である。
【図１１】この発明の実施の形態にかかるスプレッドシート生成装置のハードウェア構成を示す説明図である。
【図１２】セル定義情報を示す説明図である。
【図１３】Ｘ座標値を昇順にソートした項目を示す説明図である。
【図１４】セルの列幅調整を示す説明図である。
【図１５】この発明の実施の形態にかかるスプレッドシート生成処理手順を示すフローチャートである。
【図１６】図１５に示したセル定義情報生成処理の具体的な処理手順を示すフローチャートである。
【図１７】図１６に示した列幅算出処理の具体的な処理手順を示すフローチャートである。
【図１８】図１６に示した行高さ算出処理の具体的な処理手順を示すフローチャートである。
【図１９】図１５に示したスプレッドシート出力処理の具体的な処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下に添付図面を参照して、この発明にかかるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法の好適な実施の形態を詳細に説明する。
【００２１】
図１は、帳票の一例を示す説明図であり、図２および図３は、図１に示した帳票のスプレッドシートを示す説明図である。本発明では、図１に示した紙媒体などの帳票１００のスプレッドシートを印刷したい場合に、図１に示した「納品書」、「２００７年６月２１日」、・・・といった項目名の文字列とそのレイアウト位置をコンピュータに別々に与えることにより、図２および図３に示したスプレッドシート群からなる出力ファイルを自動生成する技術である。この出力ファイルを印刷することで、図１に示した帳票１００が印刷出力される。
【００２２】
図２および図３に示したスプレッドシート２００，３０１〜３０４は、具体的には、市販の表計算ソフトの出力ファイルで構成される。たとえば、マイクロソフト社のエクセルを用いた場合、図２および図３に示したスプレッドシート２００，３０１〜３０４は、その出力ファイル内のシートの一つとして出力される。すなわち、出力ファイルは、エクセルでいうブックに相当する。
【００２３】
なお、図２および図３中、上端のアルファベット列は、列を特定する列番号であり、左端の数字列は、行を特定する行番号である。したがって、以降、「セルＡ３」のように、列のアルファベットと行の数字との組み合わせによりセルを特定する。
【００２４】
本明細書では、図２に示したスプレッドシート２００を「レイアウト用シート」と呼び、図３に示したスプレッドシート３０１〜３０４を「データ用シート」と呼ぶ。データ用シート３０１〜３０４は、パーティションごとに複数シートに分割されている。パーティションとは、帳票１００を区画する領域である。図１を参照すると、Ｐ１〜Ｐ４という４つのパーティションによって帳票１００が区画されることとなる。
【００２５】
図３中、符号３０１がパーティションＰ１のデータ用シートであり、符号３０２がパーティションＰ２のデータ用シートであり、符号３０３がパーティションＰ３のデータ用シートであり、符号３０４がパーティションＰ４のデータ用シートである。なお、ここでは、パーティションごとにデータ用シート３０１〜３０４を分割したが、複数のパーティション内のデータを単一のデータ用シートに記述することとしてもよい。
【００２６】
また、レイアウト用シート２００とデータ用シート３０１〜３０４とは、同一項目でリンクされている。たとえば、図２に示した「納品書」という文字列が記述されているセルＦ２と図３に示したパーティションＰ１のデータ用シート３０１の「納品書」という文字列が記述されているセルＢ２とは、リンクされている。したがって、ユーザは、レイアウト用シート２００を編集したい場合に、データ用シート３０１〜３０４を編集すれば、レイアウト用シート２００を編集しなくても反映されることとなる。
【００２７】
（システム構成）
つぎに、この発明の実施の形態にかかるスプレッドシート生成装置のシステム構成について説明する。図４は、この発明の実施の形態にかかるスプレッドシート生成装置のシステム構成を示す説明図である。
【００２８】
図４において、スプレッドシート生成装置４００は、業務アプリケーション４１０から出力される入力データ群４０１と、帳票定義ツール４２０から出力されるフォーマット定義情報４０２とを取り込むことにより、出力ファイル４５０を生成する。この出力ファイル４５０は、図２に示したレイアウト用シート２００と図３に示したデータ用シート３０１〜３０４とを１ブックに纏めた出力ファイルである。
【００２９】
ここで、入力データ群４０１について説明する。入力データ群４０１とは、図３に示したデータ用シート３０１〜３０４内の文字列や数字などのデータの集合に相当するデータであり、具体的には、ＣＳＶ形式のデータ列として与えることができる。
【００３０】
たとえば、図１に示したパーティションＰ１に関する入力データ列の場合、行番号および列番号の若いセルから順に、「納品書，２００７年６月２１日，神奈川県川崎市中原区・・・，○○電気，様，△△△株式会社，東京都港区新橋・・・・・，電話：，９９−９９９９−９９９９，ＦＡＸ：，９９−９９９９−９９９８」といったカンマで区切られたデータ列となる。なお、入力データ群４０１は、図３に示したデータ用シート３０１〜３０４と同一のスプレッドシートであってもよい。
【００３１】
また、フォーマット定義情報４０２は、ユーザが帳票定義ツール４２０を利用することで生成される。図５は、帳票定義ツール４２０使用時の表示画面に表示された帳票定義体を示す説明図である。図５に示した帳票定義体５００において、内部の矩形は項目であり、その中の項目名はユーザが入力するか、あらかじめ帳票定義ツール４２０で定義されている。
【００３２】
ユーザは各項目を縮小または拡大したり、移動したりして、項目のレイアウト位置を決定する。パーティションＰ１〜Ｐ４もユーザ操作または自動的に決定される。入力データ群４０１は、この帳票定義体５００の項目を参照してユーザが入力することで得られることとなる。
【００３３】
（フォーマット定義情報４０２）
帳票定義体５００が決定されると、帳票定義ツール４２０では、その帳票定義体５００からフォーマット定義情報４０２を生成する。図６は、フォーマット定義情報４０２を示す説明図である。図６において、フォーマット定義情報４０２は、図５の帳票定義体５００で示した項目の項目名ごとに、項目情報と装飾情報とを有する。
【００３４】
図７は、項目情報のデータ構造を示す説明図である。図７において、項目名は項目を識別する文字列である。たとえば、図５に示した「タイトル」、「年月日」、「宛先」である。位置情報とは、図５に示した帳票定義体５００の左上頂点を原点とした場合のＸＹ座標系での座標である。項目領域長とは、図５に示した項目のＸ軸方向の長さである。データ長とは、項目内の文字列／数値の長さ（バイト単位）である。位置情報とデータ長によりデータ列内の項目名を検出することができる。データ形式とは、項目名が文字列または数値のいずれの形式であるかを示す。
【００３５】
フォント情報とは、項目名のフォント名やサイズをあらわす情報である。配置情報とは、右寄せ、中央、左寄せの中から選択された情報である。編集形式とは、項目名のデータ形式に応じたスプレッドシートの書式である。このスプレッドシートの書式で表示されることとなる。レコード内位置とは、レコードとなる１入力データ列の先頭からのバイト数である。なお、図８は、項目情報の一例を示す説明図である。
【００３６】
また、図９は、装飾情報のデータ構造を示す説明図である。装飾情報とは、項目に対応するセルに施される情報であり、装飾の種別（罫線／枠／網掛け）やその位置情報または範囲をあらわす情報である。
【００３７】
また、フォーマット定義情報４０２として、セル制御情報も与えられる。図１０は、セル制御情報を示す説明図である。セル制御情報とは出力となるスプレッドシートの基本セル幅、基本セル高さ、丸め幅、および丸め高さを規定する情報である。ここで、丸め幅とは、列幅に関してセルをあらたに生成しないための上限値である。同様に、丸め高さとは、行高さに関してセルをあらたに生成しないための上限値である。丸め幅および丸め高さの詳細については後述する。
【００３８】
（スプレッドシート生成装置４００のハードウェア構成）
つぎに、図４に示したスプレッドシート生成装置４００のハードウェア構成について説明する。図１１は、この発明の実施の形態にかかるスプレッドシート生成装置４００のハードウェア構成を示す説明図である。
【００３９】
図１１において、スプレッドシート生成装置４００は、コンピュータ本体１１１０と、入力装置１１２０と、出力装置１１３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク１１４０に接続可能である。
【００４０】
コンピュータ本体１１１０は、ＣＰＵ，記憶装置，インターフェースを有する。ＣＰＵは、スプレッドシート生成装置４００の全体の制御を司る。記憶装置は、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク１１１１，フラッシュメモリから構成される。ＲＡＭはＣＰＵのワークエリアとして使用される。
【００４１】
また、記憶装置には各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク１１１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク１１１１およびフラッシュメモリはコンピュータ本体１１１０に対し着脱自在である。インターフェースは、入力装置１１２０からの入力、出力装置１１３０への出力、ネットワーク１１４０に対する送受信の制御をおこなう。
【００４２】
また、入力装置１１２０としては、キーボード１１２１、マウス１１２２、スキャナ１１２３などがある。キーボード１１２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス１１２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ１１２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体１１１０内の記憶装置に格納される。なお、スキャナ１１２３にＯＣＲ機能を持たせてもよい。
【００４３】
また、出力装置１１３０としては、ディスプレイ１１３１、プリンタ１１３２、スピーカ１１３３などがある。ディスプレイ１１３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、プリンタ１１３２は、画像データや文書データを印刷する。またスピーカ１１３３は、効果音や読み上げ音などの音声を出力する。
【００４４】
つぎに、図４に示したスプレッドシート生成装置４００の機能について説明する。スプレッドシート生成装置４００は、セル定義情報生成部４３０とスプレッドシート出力部４４０とを有する。まず、セル定義情報生成部４３０について説明する。セル定義情報とは、帳票１００上の項目位置とスプレッドシートのセル位置を対応づけるために使用する定義情報である。
【００４５】
図１２は、セル定義情報を示す説明図である。セル定義情報１２００としては、スプレッドシート内の各セルＡ１〜Ｋ１７のセル幅、セル高さ、パーティションの範囲などが定義されている。パーティションＰ１の場合は、［１，１０］のように、行番号でその範囲を規定する。セル定義情報１２００は、フォーマット定義情報４０２の項目位置などに基づいて自動生成される。
【００４６】
このセル定義情報生成部４３０では、帳票１００のレイアウトを維持したまま、データの再利用性を考慮したセルを自動生成する機能である。すなわち、スプレッドシートへの出力を意識し、できる限り、無駄な列や行を作成しないように考慮する。
【００４７】
このための仕組みとして、セル制御情報（基本列幅、基本行高さ、および丸め幅、丸め高さ）をもとに、セル分割の制御を行い、同じような位置にあるデータは、同一の列および行にまとめることを実現している。また、それぞれの値はユーザによるカスタマイズが可能であるため、帳票１００ごとに最適なセル幅、セル高さで設計することができる。
【００４８】
この処理は、まず、全項目の位置情報、すなわち、フォーマット定義情報４０２の項目情報内に含まれている項目の位置情報を用いる。列幅については位置情報のＸ座標値を昇順にソートする。図１３は、Ｘ座標値を昇順にソートした項目を示す説明図である。
【００４９】
そして、ソート後の先頭の項目のＸ座標から順にチェックし、次の項目の開始位置までの距離を計算する。その距離が（基本列幅×２）未満の場合は、計算した距離を列幅とする。一方、（基本列幅×２）以上の場合は、基本の列幅分だけ移動し、（基本の列幅×２）未満になった時点で、列幅とする。また、項目位置のズレが丸め幅の範囲内であれば、調整せず、無駄な列は作成しない。このようにして、項目ごとに、セルの列幅を算出する。
【００５０】
ここで、具体例を示す。図１４は、セルの列幅調整を示す説明図である。図１４では、項目Ｋ１〜Ｋ４が昇順にソートされている。各項目Ｋ１〜Ｋ４のＸ座標値を、それぞれｘ１〜ｘ４とする。また、基本セル幅ＷＳ＝９６０ドット、基本セル高さＨＳ＝２４０ドット、丸め幅ΔＷ＝１４４ドット、丸め高さΔＨ＝１４４ドットとする。列幅は、以下のように調整される。なお、［，］は座標の区間をあらわす。
【００５１】
・列Ａ幅：Ｗａ＝［０，ｘ１−１］
・列Ｂ幅：Ｗｂ＝［ｘ１，ｘ２−１］
・列Ｃ幅：Ｗｃ＝［ｘ２，ｘ２＋ＷＳ］
・列Ｄ幅：Ｗｄ＝［ｘ２＋ＷＳ＋１，ｘ３−１］
・列Ｅ幅：Ｗｅ＝［ｘ３，ｘ３＋ＷＳ］
なお、項目Ｋ４において、［ｘ３，ｘ４］間の距離が丸め幅ΔＷ以下であるため、項目Ｋ３，Ｋ４は同一列（列Ｅ）となる。
・列Ｆ幅：Ｗｆ＝［ｘ３＋ＷＳ＋１，ｘ５］
ｘ５は帳票定義体５００の終点Ｘ座標値である。
【００５２】
行高さについても同様である。まず、位置情報のＹ座標値を昇順にソートする。そして、ソート後の先頭の項目のＹ座標から順にチェックし、次の項目の開始位置までの距離を計算する。その距離が（基本行高さ×２）未満の場合は、計算した距離を行高さとする。一方、（基本行高さ×２）以上の場合は、基本の行高さ分だけ移動し、（基本の行高さ×２）未満になった時点で、行高さとする。また、項目位置のズレが丸め幅の範囲内であれば、調整せず、無駄な行は作成しない。このようにして、項目ごとに、セルの行高さを算出する。
【００５３】
つぎに、スプレッドシート出力部４４０について説明する。スプレッドシート出力部４４０とは、データ用シート３０１〜３０４とレイアウト用シート２００とを別々に出力する機能である。シート出力部４４０では、セル定義情報１２００を用いて、項目の位置情報をセルに変換する。
【００５４】
ある項目のセル位置は、セル定義情報１２００の列幅や行高さによって決定される。ここで、列幅に注目して説明する。セル定義情報１２００の列Ａ〜列Ｄの列幅が列Ａから順に、１４４０ドット，１０２０ドット，１７６０ドット，２４００ドットとする。ある項目の位置情報のＸ座標値を５０００とした場合、この５０００と列Ａの列幅１４４０ドットとを比較する。
【００５５】
Ｘ座標値の方が大きいと、次の列である列Ｂの列幅１０２０ドットを加算して、Ｘ座標値と比較する。列Ａおよび列Ｂの合計幅は２４６０ドットなので、さらに、列Ｃの列幅１７６０ドットを加算してＸ座標値と比較する。列Ａ〜列Ｃの合計幅は４２２０ドットなので、さらに、列Ｄの列幅２４００ドットを加算する。列Ａ〜列Ｄの合計幅は６６２０ドットとなり、Ｘ座標値以上となるため、この項目は列Ｄに配置されることとなる。行高さについても同様な処理を施すことにより、項目に対応するレイアウト用シート２００のセル位置が決定される。
【００５６】
また、スプレッドシート出力部４４０では、データ用シート３０１〜３０４における各データのセル位置と、レイアウト用シート２００における項目のセル位置とのリンクを生成する。そして、最終的に、データ用シート３０１〜３０４とレイアウト用シート２００とをまとめた出力ファイル４５０を生成・出力する。
【００５７】
（スプレッドシート生成処理手順）
つぎに、この発明の実施の形態にかかるスプレッドシート生成処理手順について説明する。図１５は、この発明の実施の形態にかかるスプレッドシート生成処理手順を示すフローチャートである。図１５において、まず、業務アプリケーション４１０から入力データ群４０１を取得するとともに、帳票定義ツール４２０からフォーマット定義情報４０２を取得する（ステップＳ１５０１）。
【００５８】
つぎに、セル定義情報生成部４３０によりセル定義情報生成処理（ステップＳ１５０２）を実行し、最後に、スプレッドシート出力部４４０によりスプレッドシート出力処理（ステップＳ１５０３）を実行する。
【００５９】
つぎに、図１５に示したセル定義情報生成処理の具体的な処理手順について説明する。図１６は、図１５に示したセル定義情報生成処理の具体的な処理手順を示すフローチャートである。図１６において、まず、全項目の位置情報をフォーマット定義情報４０２から抽出する（ステップＳ１６０１）。
【００６０】
つぎに、列幅算出処理を実行して、項目の列幅を算出する（ステップＳ１６０２）。そして、行高さ算出処理を実行して項目の行高さを算出する（ステップＳ１６０３）。これにより、項目に対応するセルの列幅および行高さが設定される。そして、これらをまとめて、セル定義情報１２００として出力する（ステップＳ１６０４）。
【００６１】
つぎに、図１６に示した列幅算出処理の具体的な処理手順について説明する。図１７は、図１６に示した列幅算出処理の具体的な処理手順を示すフローチャートである。図１７において、まず、抽出された全項目のＸ座標値を昇順にソートする（ステップＳ１７０１）。つぎに、ｉ＝１とする（ステップＳ１７０２）。ｉはＸ座標値の昇順番号である。
【００６２】
そして、ｉ番目の列幅ｗｉ（＝ｘｉ−ｘｉ−１）を算出する（ステップＳ１７０３）。なお、ｉ＝０は帳票定義体５００の原点座標を示す。そして、ｉ番目の列幅ｗｉが丸め幅ΔＷ以下であるか否かを判断する（ステップＳ１７０４）。丸め幅ΔＷ以下である場合（ステップＳ１７０４：Ｙｅｓ）、ステップＳ１７０８に移行する。
【００６３】
一方、丸め幅ΔＷ以下でない場合（ステップＳ１７０４：Ｎｏ）、ｉ番目の列幅ｗｉが基本列幅ＷＳの２倍以上であるか否かを判断する（ステップＳ１７０５）。基本列幅ＷＳの２倍以上でない場合（ステップＳ１７０５：Ｎｏ）、ｉ番目の列幅ｗｉを算出する（ステップＳ１７０６）。具体的には、ｉ番目の列幅ｗｉ＝［ｘｉ＋ｗｉ−１＋１，ｘｉ−１−１］とする。そして、ステップＳ１７０８に移行する。
【００６４】
一方、基本列幅ＷＳの２倍以上である場合（ステップＳ１７０５：Ｙｅｓ）、ｉ番目の列幅ｗｉを基本列幅ＷＳとする（ステップＳ１７０７）。そして、ステップＳ１７０８に移行する。ステップＳ１７０８では、ｉをインクリメントして（ステップＳ１７０８）、ｉ＝ｎであるか否かを判断する（ステップＳ１７０９）。ｎは項目総数である。ｉ＝ｎでない場合（ステップＳ１７０９：Ｎｏ）、ステップＳ１７０４に戻る。一方、ｉ＝ｎである場合（ステップＳ１７０９：Ｙｅｓ）、ステップＳ１６０３に移行する。
【００６５】
つぎに、図１６に示した行高さ算出処理の具体的な処理手順について説明する。図１８は、図１６に示した行高さ算出処理の具体的な処理手順を示すフローチャートである。図１８において、まず、抽出された全項目のＹ座標値を昇順にソートする（ステップＳ１８０１）。つぎに、ｉ＝１とする（ステップＳ１８０２）。ｉはＹ座標値の昇順番号である。
【００６６】
そして、ｉ番目の行高さｈｉ（＝ｙｉ−ｙｉ−１）を算出する（ステップＳ１８０３）。なお、ｉ＝０は帳票定義体５００の原点座標を示す。そして、ｉ番目の行高さｈｉが丸め高さΔＨ以下であるか否かを判断する（ステップＳ１８０４）。丸め高さΔＨ以下である場合（ステップＳ１８０４：Ｙｅｓ）、ステップＳ１８０８に移行する。
【００６７】
一方、丸め高さΔＨ以下でない場合（ステップＳ１８０４：Ｎｏ）、ｉ番目の行高さｈｉが基本行高さＨＳの２倍以上であるか否かを判断する（ステップＳ１８０５）。基本行高さＨＳの２倍以上でない場合（ステップＳ１８０５：Ｎｏ）、ｉ番目の行高さｈｉを算出する（ステップＳ１８０６）。具体的には、ｉ番目の行高さｈｉ＝［ｙｉ＋ｈｉ−１＋１，ｙｉ−１−１］とする。そして、ステップＳ１８０８に移行する。
【００６８】
一方、基本行高さＨＳの２倍以上である場合（ステップＳ１８０５：Ｙｅｓ）、ｉ番目の行高さｈｉを基本行高さＨＳとする（ステップＳ１８０７）。そして、ステップＳ１８０８に移行する。ステップＳ１８０８では、ｉをインクリメントして（ステップＳ１８０８）、ｉ＝ｎであるか否かを判断する（ステップＳ１８０９）。ｎは項目総数である。ｉ＝ｎでない場合（ステップＳ１８０９：Ｎｏ）、ステップＳ１８０４に戻る。一方、ｉ＝ｎである場合（ステップＳ１８０９：Ｙｅｓ）、ステップＳ１６０４に移行する。
【００６９】
つぎに、図１５に示したスプレッドシート出力処理の具体的な処理手順について説明する。図１９は、図１５に示したスプレッドシート出力処理の具体的な処理手順を示すフローチャートである。図１９において、まず、全パーティションの処理が終了したか否かを判断する（ステップＳ１９０１）。
【００７０】
終了していない場合（ステップＳ１９０１：Ｎｏ）、未処理のパーティションを選択する（ステップＳ１９０２）。選択されたパーティションについて、すべての項目を処理したか否かを判断する（ステップＳ１９０３）。処理していない場合（ステップＳ１９０３：Ｎｏ）、セル位置特定処理を実行する（ステップＳ１９０４）。
【００７１】
ここで、セル位置特定処理とは、上述したように、セル定義情報１２００の列幅を列Ａから順に加算していき、項目のＸ座標値以上となる列を、その項目に該当する列とする。行についても同様に、セル定義情報１２００の行高さを行１から順に加算していき、項目のＹ座標値以上となる行を、その項目に該当する行とする。これにより、Ｘ座標値以上となった列およびＹ座標値以上となった行によりセルを特定する。
【００７２】
このあと、登録処理を実行する（ステップＳ１９０５）。登録処理とは、フォーマット定義情報４０２の位置情報を手がかりとして、項目に該当する項目名（文字列／数値）をデータ列から特定し、特定された項目名の項目を、その項目のセル位置となるセルに対応付ける。これにより、たとえば、「タイトル」という項目の項目名に「納  品  書」が書き込まれ、図２に示したセルＦ２に位置することとなる。
【００７３】
このあと、加工処理を実行する（ステップＳ１９０６）。ここで、加工処理とは、フォーマット定義情報４０２を参照することで、そのセルに書き込まれる項目名のフォントを決めたり、セルに網掛けを施したりする。また、数値の場合は、編集形式を参照することで、スプレッドシートの書式に適合する形式で表示することができる。このあと、ステップＳ１９０３に戻る。
【００７４】
ステップＳ１９０３において、すべての項目が処理された場合（ステップＳ：１９０３Ｙｅｓ）、ステップＳ１９０１に戻る。ステップＳ１９０１において、全パーティションの処理が終了した場合（ステップＳ１９０１：Ｙｅｓ）、ステップＳ１９０７に移行する。
【００７５】
ステップＳ１９０７では、スプレッドシートとしてレイアウト用シート２００（図２を参照）を生成する。また、入力データ群４０１をデータ用シート３０１〜３０４（図３を参照）として生成する。このとき、レイアウト用シート２００の項目名が記述されているセルと入力データ群４０１のデータ（すなわち項目名）とが対応付けられているため、データ用シート３０１〜３０４のデータ（項目名）が記述されているセルと、同一項目名が記述されているレイアウト用シート２００とがリンクする。
【００７６】
そして、このレイアウト用シート２００とデータ用シート３０１〜３０４とをまとめたスプレッドシート群を出力する（ステップＳ１９０７）。出力形式は、たとえば、ＸＭＬ形式により圧縮保存したり、ディスプレイに表示したり、印刷出力したり、外部のコンピュータに送信することとしてもよい。
【００７７】
以上説明したように、本実施の形態によれば、データ（項目名）と書式（自動生成）を分けたデータ管理をおこなうことができる。すなわち、データ変換の作業を自動化するため、印刷処理では、フォーマット定義（書式）とデータから編集処理を行い印刷していたが、本実施の形態では、データ（項目名）と書式は別々に処理する。
【００７８】
データ（項目名）は、文字列、数値、日付、時刻などに分類して、データ形式に応じた値への変換を実施する。書式は、フォーマット定義（書式）に指定された形式で表示されるように書式文字列を自動的に生成した上でスプレッドシートに変換する。
【００７９】
これにより、データ（項目名）を２次利用する場合やそのまま印刷結果として表示する場合にも対応できる。データ（項目名）と書式が分かれているため、２次利用でのデータ変換が不要となる。
【００８０】
また、本実施の形態では、セル幅とセル高さ、セル結合を自動生成することができる。すなわち、印刷結果と同様のレイアウトを保証するため、フォーマット定義（レイアウト）の項目位置と項目の占める領域より、最適なセル幅と高さを自動的に生成することで、無駄な列や行が少ないスプレッドシートに変換する。
【００８１】
データ（項目名）にはセルという概念がないため、印刷結果と同じようにセル情報を定義することは非常に困難で難しい作業となる。また、細かなセル単位で定義すると印刷位置と同じ位置に合わせることはできるが、データ（項目名）を再利用しようとした場合に無駄な列のデータが多く含まれてしまい、再利用性に問題がある。
【００８２】
そこで、印刷イメージを保持しながらも、項目位置と項目の占める領域からなるべく無駄な列が発生しないように、セルの幅や高さを調整したセル情報を自動的に生成することで、データ（項目名）の２次利用性の高いスプレッドシートを自動的に生成することが可能となる。また、既存の印刷システムを利用できるため、アプリケーション開発にかかるコストと時間を削減することができる。
【００８３】
さらに、本実施の形態では、データ用シート３０１〜３０４とレイアウト用シート２００を分けた文書管理を実現することができる。すなわち、データの２次利用性を高めるため、データ用シート３０１〜３０４とレイアウト用シート２００の一元化を行う。具体的には、データ（項目名）はデータ用シート３０１〜３０４にＣＳＶデータ相当の形式で出力し、印刷イメージは、レイアウト用シート２００として作成し管理する。
【００８４】
レイアウト用シート２００からデータ用シート３０１〜３０４のデータを参照（リンク）することで、データ用シート３０１〜３０４を変更すると印刷イメージも変更される。したがって、データが一元管理され、複数のレイアウト用シート２００を作成してもデータ用シート３０１〜３０４の修正だけで、他のレイアウト用シート２００への修正は基本的には不要となる。したがって、管理が簡略化され、集計用とレイアウト用のどちらにも２次利用性の高いスプレッドシートを作成することができる。
【００８５】
なお、本実施の形態で説明したスプレッドシート生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【００８６】
（付記１）コンピュータを、
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段、
前記項目群の列方向の座標値を昇順にソートするソート手段、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定手段、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段、
として機能させることを特徴とするスプレッドシート生成プログラム。
【００８７】
（付記２）前記コンピュータを、
前記距離が基準列幅より大きい所定の列幅以上であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記列幅を決定することを特徴とする付記１に記載のスプレッドシート生成プログラム。
【００８８】
（付記３）前記決定手段は、
前記判定手段によって前記所定の列幅以上であると判定された場合、前記セルの列幅を前記基準列幅に決定することを特徴とする付記２に記載のスプレッドシート生成プログラム。
【００８９】
（付記４）前記決定手段は、
前記判定手段によって前記所定の列幅以上でないと判定された場合、前記セルの列幅を前記距離に決定することを特徴とする付記２に記載のスプレッドシート生成プログラム。
【００９０】
（付記５）前記コンピュータを、
前記距離が基準列幅より小さい丸め幅以下であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記列幅を決定することを特徴とする付記１に記載のスプレッドシート生成プログラム。
【００９１】
（付記６）前記決定手段は、
前記判定手段によって前記丸め幅以下であると判定された場合、前記セルの列幅を決定しないことを特徴とする付記５に記載のスプレッドシート生成プログラム。
【００９２】
（付記７）前記決定手段は、
前記判定手段によって前記丸め幅以下でないと判定された場合、前記セルの列幅を前記距離に決定することを特徴とする付記５に記載のスプレッドシート生成プログラム。
【００９３】
（付記８）コンピュータを、
帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段、
前記項目群の行方向の座標値を昇順にソートするソート手段、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定手段、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段、
として機能させることを特徴とするスプレッドシート生成プログラム。
【００９４】
（付記９）前記コンピュータを、
前記距離が基準行高さより大きい所定の行高さ以上であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記行高さを決定することを特徴とする付記８に記載のスプレッドシート生成プログラム。
【００９５】
（付記１０）前記決定手段は、
前記判定手段によって前記所定の行高さ以上であると判定された場合、前記セルの行高さを前記基準行高さに決定することを特徴とする付記９に記載のスプレッドシート生成プログラム。
【００９６】
（付記１１）前記決定手段は、
前記判定手段によって前記所定の行高さ以上でないと判定された場合、前記セルの行高さを前記距離に決定することを特徴とする付記９に記載のスプレッドシート生成プログラム。
【００９７】
（付記１２）前記コンピュータを、
前記距離が基準行高さより小さい丸め高さ以下であるか否かを判定する判定手段として機能させ、
前記決定手段は、
前記判定手段によって判定された判定結果に基づいて前記行高さを決定することを特徴とする付記８に記載のスプレッドシート生成プログラム。
【００９８】
（付記１３）前記決定手段は、
前記判定手段によって前記丸め高さ以下であると判定された場合、前記セルの行高さを決定しないことを特徴とする付記１２に記載のスプレッドシート生成プログラム。
【００９９】
（付記１４）前記決定手段は、
前記判定手段によって前記丸め高さ以下でないと判定された場合、前記セルの行高さを前記距離に決定することを特徴とする付記１２に記載のスプレッドシート生成プログラム。
【０１００】
（付記１５）前記取得手段は、
前記項目の項目名に関するデータ列を取得し、
前記出力手段は、
前記特定手段によって特定されたセルに前記項目および当該項目の項目名を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することを特徴とする付記１または２に記載のスプレッドシート生成プログラム。
【０１０１】
（付記１６）前記取得手段は、
前記項目に関するフォーマットを定義したフォーマット定義情報を取得し、
前記出力手段は、
前記特定手段によって特定されたセルに前記項目、当該項目の項目名、および前記フォーマット定義情報を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力することを特徴とする付記１５に記載のスプレッドシート生成プログラム。
【０１０２】
（付記１７）前記出力手段は、
前記帳票のレイアウトに関するスプレッドシートと前記項目名に関するスプレッドシートとを含むファイルを出力することを特徴とする付記１５または１６に記載のスプレッドシート生成プログラム。
【０１０３】
（付記１８）前記出力ファイルは、同一の項目について、前記帳票のレイアウトに関するスプレッドシートのセルと前記項目名に関するスプレッドシートのセルとが関連付けられていることを特徴とする付記１７に記載のスプレッドシート生成プログラム。
【０１０４】
（付記１９）付記１〜１８のいずれか一つに記載のスプレッドシート生成プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０１０５】
（付記２０）帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段と、
前記項目群の列方向の座標値を昇順にソートするソート手段と、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定手段と、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段と、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段と、
を備えることを特徴とするスプレッドシート生成装置。
【０１０６】
（付記２１）帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得手段と、
前記項目群の行方向の座標値を昇順にソートするソート手段と、
前記ソート手段によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定手段と、
前記取得手段によって取得されたレイアウト位置に関する情報に基づいて、前記決定手段によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定手段と、
前記特定手段によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力手段と、
を備えることを特徴とするスプレッドシート生成装置。
【０１０７】
（付記２２）帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得工程と、
前記項目群の列方向の座標値を昇順にソートするソート工程と、
前記ソート工程によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて列幅を項目ごとに決定する決定工程と、
前記取得工程によって取得されたレイアウト位置に関する情報に基づいて、前記決定工程によって列幅が決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定工程と、
前記特定工程によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力工程と、
を含んだことを特徴とするスプレッドシート生成方法。
【０１０８】
（付記２３）帳票を構成する項目群の前記帳票内のレイアウト位置に関する情報を取得する取得工程と、
前記項目群の行方向の座標値を昇順にソートするソート工程と、
前記ソート工程によりソートされた結果、昇順の順位が１つ上の項目との間の距離に基づいて行高さを項目ごとに決定する決定工程と、
前記取得工程によって取得されたレイアウト位置に関する情報に基づいて、前記決定工程によって行高さが決定されたセルの中から、前記レイアウト位置に該当するセルを前記項目ごとに特定する特定工程と、
前記特定工程によって特定されたセルに前記項目を与えることにより、前記帳票のレイアウトに関するスプレッドシートを出力する出力工程と、
を含んだことを特徴とするスプレッドシート生成方法。
【産業上の利用可能性】
【０１０９】
以上のように、本発明にかかるスプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法は、項目名のデータとレイアウトとの一元管理に有用であり、特に、エクセルなどの表計算ソフトに適している。
【符号の説明】
【０１１０】
４００  スプレッドシート生成装置
４０１  入力データ群
４０２  フォーマット定義情報
４１０  業務アプリケーション
４２０  帳簿定義ツール
４３０  セル定義情報生成部
４４０  スプレッドシート出力部
４５０  出力ファイル
【国際調査報告】
2009001462.tif 000022
2009001462.tif 000023
2009001462.tif 000024
2009001462.tif 000025