JP2011198296A - スプレッドシート生成プログラム、スプレッドシート生成装置、スプレッドシート生成方法 - Google Patents

スプレッドシート生成プログラム、スプレッドシート生成装置、スプレッドシート生成方法 Download PDF

Info

Publication number
JP2011198296A
JP2011198296A JP2010066911A JP2010066911A JP2011198296A JP 2011198296 A JP2011198296 A JP 2011198296A JP 2010066911 A JP2010066911 A JP 2010066911A JP 2010066911 A JP2010066911 A JP 2010066911A JP 2011198296 A JP2011198296 A JP 2011198296A
Authority
JP
Japan
Prior art keywords
information
cell
spreadsheet
item
items
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010066911A
Other languages
English (en)
Other versions
JP5672732B2 (ja
Inventor
Hirotoshi Okushiro
宏俊 奥城
Hiromi Shimakata
博美 島方
Koji Tachibana
浩二 立花
Hideaki Matsui
秀明 松井
Takayoshi Mizuma
隆好 水間
Kenji Ura
兼治 浦
Michiyo Yamashita
美知代 山下
Masaharu Iwamoto
征春 岩本
Genichi Motojima
源一 本島
Taiji Takanarita
泰至 高成田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010066911A priority Critical patent/JP5672732B2/ja
Publication of JP2011198296A publication Critical patent/JP2011198296A/ja
Application granted granted Critical
Publication of JP5672732B2 publication Critical patent/JP5672732B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)

Abstract

【課題】手作業によるセルやレイアウト調整の不要なスプレッドシートであって、複数の表に対応する印刷データが出力された1枚のスプレッドシートを生成することを可能とする技術を提供する。
【解決手段】スプレッドシート生成システム1は、中間データ生成装置2、中間データ合成装置3、スプレッドシート出力装置4を備える。前記中間データ生成装置2は、複数の表に対応する印刷データから、複数の中間データを生成する。前記中間データ合成装置3は、前記中間データを合成して、1枚のスプレッドシートに対応する合成データを生成する。前記スプレッドシート出力装置4は、前記合成データをスプレッドシート形式に変換してスプレッドシートを出力する。
【選択図】図1

Description

本発明は印刷データからスプレッドシートを生成する技術に関する。
表計算ソフトウェアで用いられる、行と列で構成される表をスプレッドシートという。
従来、印刷データをスプレッドシートに出力する場合、碁盤目状のスプレッドシート、つまり細かいセル幅、セル高さのスプレッドシート上に印刷データを出力していた。この理由は、表はセル幅、セル高さによりレイアウトが決まるが、印刷はドットによる座標位置でレイアウトが決定されるためである。
特許3987066号公報 特開平11−167475号公報 国際公開WO2009/001462
上述のように、印刷データを表計算ソフトウェアのスプレッドシートに出力する場合、碁盤目状のスプレッドシートに印刷データを出力していた。碁盤目状のスプレッドシートのように細かいセル幅、セル高さの表が生成されると、無駄なセルが多くなり、データの二次利用ができない表となってしまう。そこで、ユーザは、印刷データを碁盤目状スプレッドシートに出力した後、手作業でレイアウトとセルの調整をする必要がある、という問題があった(図49参照)。
また、印刷時に1枚の紙に2ページ分の原稿を印刷する2UPや、4ページ分の原稿を印刷する4UPのように、1枚のスプレッドシートに複数の表に対応する印刷データを出力し、1枚のスプレッドシート上に複数の表を表示したいという要求がある。しかしながら、この場合も手作業によるレイアウトの調整が必要となる。レイアウトの異なる表を合成する場合、例えば図50に示す表1と表2を合成する場合、スプレッドシートのレイアウトは表1のセル幅、セル高さに依存してしまう。このため表2のレイアウトを維持するためには手作業で行や列の追加とセル幅(列幅)、セル高さ(行高さ)の調整を施す必要がある。つまり、図50では、二つの表を合成した後、表2に対応する部分については、列幅を手動で調整する必要がある。また、合成後、表2に対応する部分について、行幅を調整するとコピー先のレイアウトが崩れてしまうため、行追加などの調整が手動で必要である。このように複雑な調整等が必要となるため、印刷時に2UP,4UPに合成し紙に印刷する機能はあるが、最初から1枚のスプレッドシート上に複数の表に対応する印刷データを出力する技術は存在しなかった。
そこで、本発明は、手作業によるセルやレイアウト調整の不要なスプレッドシートであって、複数の表に対応する印刷データが出力された1枚のスプレッドシートを生成することを可能とする技術を提供することを目的とする。
開示の一態様によれば、情報処理装置に、中間データ生成ステップ、合成後位置情報生成ステップ、フォーマット定義決定ステップ、合成ステップ、スプレッドシート出力ステップを実行させるプログラムが提供される。
前記中間データ生成ステップは、複数の表に対応する印刷データから、該各表に含まれる複数の項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成する。
前記合成後位置情報生成ステップは、前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正する。
前記フォーマット定義決定ステップは、前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定する。
前記合成ステップは、まず、前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出する。そして、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力する。
前記スプレッドシート出力ステップは、前記合成データの各セル情報をそれぞれスプレッドシート形式のデータに変換し、前記スプレッドシートの全セル分のセル情報をスプレッドシート形式のデータとして、スプレッドシートを出力する。
また、別の態様においては、上記各ステップとそれぞれ同様に動作する中間データ生成手段、合成後位置情報生成手段、フォーマット定義決定手段、合成手段、スプレッドシート出力手段を備える情報処理装置が提供される。
また、別の態様においては、前記プログラムに従って情報処理装置が実行する方法も提供される。
開示の一態様によれば、手作業によるセルやレイアウト調整の不要なスプレッドシートであって、複数の表に対応する印刷データが出力された1枚のスプレッドシートを生成することが可能となる。これにより、ユーザ等の作業効率を上げることができ、また、印刷データの二次利用性を高める効果がある。
本実施形態のスプレッドシート生成システムの構成を示す図である。 情報処理装置の構成を示す図である。 本実施形態のスプレッドシート生成システムのより詳しい構成を示す図である。 本実施形態における座標軸を説明する図である。 本実施形態における区画を説明する図である。 印刷データとフォーマット定義情報のデータ構造を説明する図である。 フォーマット定義情報の<1>項目情報のデータ構造を説明する図である。 編集形式を説明する図である。 フォーマット定義情報の<2>罫線情報のデータ構造を説明する図である。 中間データ(表)のデータ構造を説明する図である。 中間データ(表)の<1>項目情報のデータ構造を説明する図である。 中間データ(表)の<2>罫線情報のデータ構造を説明する図である。 中間データ(表)の<3>論理座標情報(合成前)のデータ構造を説明する図である。 中間データ(表)の<4>縦横サイズのデータ構造を説明する図である。 表合成制御情報のデータ構造を説明する図である。 表合成制御情報の一例を示す図である。 中間データ管理情報のデータ構造を説明する図である。 中間データ管理情報の一例(その1)を示す図である。 中間データに対応する表のサイズの一覧の一例を示す図である。 中間データ管理情報の(5)中間データ合成後の縦横サイズを算出するための手順を説明する図である。 中間データ管理情報の一例(その2)を示す図である。 論理座標情報(合成後)のデータ構造を説明する図である。 論理座標情報(合成後)の算出方法を説明する図である。 セル制御情報のデータ構造を説明する図である。 セル定義情報のデータ構造を説明する図である。 論理座標情報(合成後)の昇順ソートの一例を示す図である。 スプレッドシートのフォーマット定義の決定について具体的に説明する図である。 セル情報のデータ構造を説明する図である。 セル結合の概略を説明する図である。 本実施形態のスプレッドシート生成システムの全体システムフローを示す図である。 図30の中間データ生成処理(S301)の詳しいフローを示す図である。 図30の中間データ管理情報生成処理(S302)の詳しいフローを示す図である。 図30のセル定義情報生成処理(S303)の詳しいフローを示す図である。 図33のセル幅の算出処理(S332)の詳しいフローを示す図である。 図34のセル幅の決定処理(S344およびS346)の詳しいフローを示す図である。 図33のセル高さの算出処理(S334)の詳しいフローを示す図である。 図36のセル高さの決定処理(S364およびS366)の詳しいフローを示す図である。 図30の中間データ合成処理(S304)の詳しいフローを示す図である。 図38のセル位置変換処理(S385)の詳しいフローを示す図である。 図38のセル位置変換処理(S385)を具体例を参照して説明する図である。 図38のデータ設定処理(S386)の詳しいフローを示す図である。 図38の書式設定処理(S387)の詳しいフローを示す図である。 図38のフォント、配置属性の設定処理(S388)の詳しいフローを示す図である。 図38のセル結合の設定処理(S389)の詳しいフローを示す図である。 図38の罫線、網掛けの設定処理(S390)の詳しいフローを示す図である。 図30のスプレッドシート生成処理(S305)の詳しいフローを示す図である。 XML形式のデータの一例を示す図である。 本実施形態により、二つの表に対応する印刷データを合成して一枚のスプレッドシートを生成した際の一例を示す図である。 印刷データをスプレッドシートに出力した場合の従来の問題点を説明する図である。 二つの表に対応する印刷データを合成して一枚のスプレッドシートを生成した場合の問題点を説明する図である。
以下、図面を参照して、スプレッドシート生成装置の実施の形態について説明する。
図1に本実施形態のスプレッドシート生成システム1の構成を示す。
スプレッドシート生成システム1は、複数の表に対応する印刷データを合成して1枚のスプレッドシートを生成するもので、中間データ生成装置2、中間データ合成装置3、スプレッドシート出力装置4を含む。
表に対応する印刷データは、業務アプリケーション8や帳票定義ツール9などを用いてユーザ等により作成され、印刷データ5およびフォーマット定義情報6として情報処理装置の記憶装置等に格納されている。スプレッドシート生成システム1は、印刷データ5やフォーマット定義情報6を入力情報とする。
スプレッドシート生成システム1の中間データ生成装置2では、印刷データ5とフォーマット定義情報6とから中間データを生成する。本実施形態では、表中の各欄のデータ、すなわち見出し等を示した文字列や数値等を「項目」ということにする。また、各項目に対応する情報であって、項目のデータやそのフォーマット、編集形式、項目の位置情報などを含む情報を項目情報という。中間データは、すべての項目に対応する項目情報と、表の罫線・網掛け等の情報と、各項目の合成前の位置情報と、合成前の表の縦横サイズを含んで生成される。また中間データは各表に対応して生成され、たとえば2つの表に対応する印刷データを合成する場合には2つの中間データが生成される。
中間データ合成装置3では、まず、複数の中間データに含まれるすべての項目について、表合成後の位置情報を求める。次に、求めた項目の位置情報に基づいて、生成するスプレッドシートのフォーマット定義(スプレッドシートのセル幅、セル高さを規定したもの)を決定する。そして、フォーマット定義に基づいたスプレッドシート上に、中間データに含まれるすべての項目を配置し、各項目がどのセルに配置されるかを特定する。これにより、それぞれのセルに対して、配置される項目の項目情報を含むセル情報を生成する。そして更に、項目情報が備える項目の範囲を示す情報に基づいて、複数のセルにまたがって配置される項目があることが検出される場合に、該当セルを結合する情報を、前記セル情報に更に記録する。これによりスプレッドシートのセルの結合を行う。
以上のような処理から、前記全項目に対応するセル情報を生成し、全セル情報を1枚のスプレッドシートに対応する合成データとして出力する。
最後に、スプレッドシート出力装置4では、合成データである、セル情報をスプレッドシート形式に変換して、スプレッドシート7を出力する。
上述のように、本実施形態では、まず複数の表に対応する印刷データをそれぞれ変換し、複数の中間データを生成する。そして、該複数の中間データを合成し、1枚のスプレッドシートに対応する合成データを生成する。更に該合成データをスプレッドシート形式に変換して、スプレッドシートを生成する。このように本実施形態では中間データを利用することにより、複数の表に対応する印刷データを1枚のスプレッドシートに出力することを可能とする。また、中間データを合成する際に、それぞれの表のレイアウトが崩れないように、また、なるべく無駄なセルが生成されないように合成処理を行う。これにより、スプレッドシート生成後に手作業によるセルやレイアウトの調整が不要で、ユーザ等の作業効率を上げることができる。また、印刷データの二次利用性を高めることができる。
尚、図1に示したスプレッドシート生成システム1は、図2に示すようなハードウェア構成の情報処理装置により実現される。
図2の情報処理装置22は、Central Processing Unit(CPU)10、Read Only memory(ROM)11、 Random Access Memory(RAM)12、通信インターフェイス13、入力装置14、出力装置15、記憶装置16、可搬型記憶媒体19の駆動装置17を備える。情報処理装置22が備えるこれら各部は、バス18により接続されている。
また、情報処理装置22は通信インターフェイス13を介してネットワーク20に接続されている。ネットワーク20は、Local Area Network(LAN)やインターネットなどの任意のネットワークである。
CPU10は、RAM12にプログラムをロードし、RAM12をワーキングエリアとしても用いながらプログラムを実行することにより、情報処理装置22をスプレッドシート生成システム1として機能させる。すなわち、CPU10はプログラムに従って、後述する処理フローを実現することによりスプレッドシート生成システムとして機能する。その際に、中間データ等のデータの格納部としては、たとえばRAM12により実現されるが、RAM12と記憶装置16の双方により実現されてもよい。
プログラムは、ROM11または記憶装置16に予め格納されていてもよく、ネットワーク20を介してプログラム提供者21から提供され、記憶装置16に格納されてもよい。あるいは、可搬型記憶媒体19に格納され、駆動装置17にセットされた可搬型記憶媒体19からRAM12にロードされ、CPU10により実行されてもよい。可搬型記憶媒体19としては、Compact Disc(CD)やDigital Versatile Disk(DVD)などの光ディスク、光磁気ディスク、磁気ディスク、不揮発性半導体メモリなど様々な形式の記憶媒体を使用することができる。
入力装置14は、マウスなどのポインティングデバイスやキーボードである。出力装置15は、例えば液晶ディスプレイなどの表示装置である。記憶装置16は、ハードディスク装置などの磁気ディスク装置でもよく、他の種類の記憶装置でもよい。
以上のように本実施形態のスプレッドシート生成システム1が情報処理装置で構成されることを説明した。以下、本実施形態のスプレッドシート生成システム1についてより詳しく説明する。
まず、図3に、スプレッドシート生成システム1のより詳しい構成を示す。
スプレッドシート生成システム1は、中間データ生成部30、中間データ管理情報生成部31、セル定義情報生成部32、中間データ合成部33、スプレッドシート出力部34を備える。尚、中間データ生成部30は中間データ生成装置2に含まれる。また、中間データ管理情報生成部31、セル定義情報生成部32、中間データ合成部33は、中間データ合成装置3に含まれる。また、スプレッドシート出力部34は、スプレッドシート出力装置4に含まれる。
以下、各部について説明するが、各部によって生成される情報(データ等)の構造については、図を参照して後で説明するため、ここでは簡単な説明とする。
中間データ生成部30は、フォーマット定義情報と印刷データ35から表合成用の中間データ(表)36を、1枚のスプレッドシート上に合成する表の数分だけ生成する。つまり、例えば2UPの場合には2つの表に対応する中間データ(表)36を生成し、4UPの場合には4つの表に対応する中間データ(表)36を生成する。
印刷データは表中の各項目に対応する文字列データがシリアルに格納されているレコードである。また、フォーマット定義情報は表の形式を規定した情報である。中間データ(表)36は、印刷データとフォーマット定義情報に含まれる情報とから、表中の各項目に対応する項目情報、表中の罫線・網掛けなどの情報、表の縦横サイズの情報を含んで生成される。また、中間データ(表)36は、各項目の印字位置を示す位置情報である、論理座標情報(合成前)を含む。
中間データ管理情報生成部31は、表合成制御情報37と中間データ(表)36から、中間データ管理情報39を生成する。表合成制御情報37は、印刷用紙のサイズ、用紙方向、1枚の紙に合成する表の数を指定する情報である。中間データ管理情報生成部31では、中間データ(表)36から合成するそれぞれの表の縦と横のサイズを取得し、それに基づいて中間データ合成後の縦横サイズを算出する。中間データ管理情報39には、表合成制御情報37に含まれる情報と、中間データ合成後の縦横サイズ、および各表に対応する中間データ(表)36への参照情報(リンク)が含まれる。
また、中間データ管理生成部31では、論理座標情報(合成後)38を算出する。論理座標情報について説明する前にまず、座標軸について説明する。図4に座標軸を示す。縦軸y、横軸xとし、y軸は下方向に増加、x軸は右方向に増加する。また、「区画」とは2UP,4UPする場合に、それぞれの表を配置するために区切った紙の一つ一つの部分である。2UPする場合には、例えば図5(a)のように、横方向に長い紙に対し、区画1、区画2が左から順に配置される。また、4UPする場合には、例えば図5(b)のように区画1、区画2の下に順に区画3、区画4が左から配置される。
中間データ管理情報生成部31は、まず、各表を原点からずらして各区画に配置するための補正情報を算出する。例えば、区画2に配置する表については区画1に対して左方向に移動して配置しなければならないため、区画1に配置する表の分だけx座標を右方向に移動した補正情報、例えば(a, 0)(但しaは区画1の幅の大きさ)を算出する。次に、算出した補正情報を、中間データ(表)36に含まれる論理座標情報(合成前)に加えて、各項目の印字位置を示す論理座標情報(合成後)38を算出する。このように算出した論理座標情報(合成後)38は、各表を合成した場合の各項目の位置情報を示すものである。
次に、セル定義情報生成部32は、論理座標情報(合成後)38とセル制御情報40とから、セル定義情報41を生成する。セル制御情報40は予め設定情報等として与えられる情報である。また、セル制御情報40は、生成するスプレッドシートのセル幅とセル高さ、つまりフォーマット定義を決定するための基本となるセル幅(基本セル幅)、セル高さ(基本セル高さ)、丸め幅、丸め高さを規定した情報である。該セル制御情報40と、論理座標情報(合成後)38とを用いて、生成するスプレッドシートの最適なセル幅(列幅)、セル高さ(行高さ)を決定し、セル定義情報41(生成するスプレッドシートのフォーマット定義)を生成する。
次に、中間データ合成部33は、中間データ(表)36と、中間データ管理情報39と、セル定義情報41とから、スプレッドシートを生成する直前のデータであるセル情報42を生成する。
すなわち、中間データ合成部33では、まず、中間データ(表)36の或る項目について、セル定義情報41で規定されたスプレッドシートのどのセルに配置されるかを算出し、該項目に対応する項目情報を含むセル情報42を生成する。その後、処理中の項目に対応する項目範囲を示す情報から、該項目が占める範囲に対応するセルの範囲を特定し、該特定したセル範囲に基づいて必要であれば前記スプレッドシート上のセルの結合を行う情報を、前記セル情報42に記録する。更に、罫線・網掛けなどの範囲を特定し、セル情報42に格納する。この処理を中間データ(表)36のすべての項目について行う。そして、生成された全セル情報42を1枚のスプレッドシートに対応する合成データとして、次のスプレッドシート出力部34の処理に渡す。
最後に、スプレッドシート出力部34で、スプレッドシート上の全セル分のセル情報42をスプレッドシートの形式に変換してスプレッドシート43を出力する。
以上のように、本実施形態では、印刷データとフォーマット定義情報35から中間データ(表)36を合成する表に対応する数だけ生成する。そして次に、中間データ(表)36と表合成制御情報37から中間データ管理情報39を生成する。また、各表に含まれる各項目の合成後の位置情報である論理座標情報(合成後)38を生成する。次に、セル制御情報40と論理座標情報(合成後)38から生成するスプレッドシートのセル幅(列幅)、セル高さ(行高さ)を規定したフォーマット定義である、セル定義情報41を生成する。そして、中間データ(表)36、中間データ管理情報39、セル定義情報41から、これらの情報を合成し中間データに含まれるすべての項目に対応するセル情報42を生成する。最後に、スプレッドシート上の全セル分のセル情報13をスプレッドシート形式に変換して、スプレッドシートを生成する。
以下、各情報についてデータ構造を示して説明する。
まず、図6を参照して、印刷データとフォーマット定義情報35のデータ構造について説明する。
印刷データは、表中の各項目に対応する文字列データがシリアルに格納されているレコードである。
また、フォーマット定義情報は、各パーティションごとに、<1>項目情報、<2>罫線情報、を含むデータ構造となっている。<1>項目情報の詳しいデータ構造を図7に、<2>罫線情報の詳しいデータ構造を図9に示す。
図7に示すように、<1>項目情報は、(1)項目名、(2)項目の位置情報、(3)項目領域長、(4)データ長、(5)データ形式、(6)フォント情報、(7)配置情報、(8)編集形式、(9)レコード内位置、の情報を含む。(1)〜(9)の各詳しい説明は以下の通りである。
(1)項目名:項目を識別するための名前(フォーマット定義内で一意)。
(2)項目の位置情報:項目の位置を示す座標位置(項目の最左最下の座標)。
(3)項目領域長:項目の範囲を示す値。
(4)データ長さ:データの長さを示す値(単位:バイト数)。
(5)データ形式:データの種類を示す値(テキストデータ、数値データ、など)。
(6)フォント情報:フォント名やフォントサイズを示す情報。
(7)配置情報:中央揃えなど文字の配置に関する情報。
(8)編集形式:データを編集して出力する場合の編集形式を示す情報(図8参照)。
編集形式は、最終的に生成されるスプレッドシートにおける表示形式を指定するための情報である。(8)編集形式とスプレッドシートの書式(表示形式)の対応を図8に示す。図8において、たとえば、<1>項目情報の(5)データ形式が「数値」で(8)編集形式が「9999999」の場合、スプレッドシートでの書式は「000000;000000」となる。他も同様である。
(9)レコード内位置:レコード形式のデータである印刷データの先頭から何バイト目かを示す情報(例えば図6において、項目Aの(9)レコード内位置は、印刷データ内の「あいうえお」を格納している位置が、印刷データの先頭から何バイト目かを示す情報を格納している。)。
また、図9に示すように、フォーマット定義情報の<2>罫線情報のデータ構造は、(1)種別、(2)位置情報などの情報を含む構造となっている。(1)、(2)の各情報の詳しい説明は以下の通りである。
(1)種別:罫線、枠、網掛けを識別する情報。
(2)位置情報:罫線、枠、網掛けの位置や範囲を示す情報で、開始位置(X1, Y1)、終了位置(X2, Y2)から成る。尚、枠、網掛けの場合、開始位置は最左最上の座標を示し、終了位置は最右最下の座標を示す。
以上、印刷データとフォーマット定義情報35のデータ構造について図6〜図9を参照して説明した。
次に、中間データ生成部30にて、印刷データとフォーマット定義情報35から生成される中間データ(表)36のデータ構造について説明する。
図10に中間データ(表)36のデータ構造を示す。合成前の表中の各欄の見出し等を示した文字列や数値等を「項目」ということは上述したが、中間データ(表)36はこの項目をスプレッドシートに出力するための情報を含むように生成される。すなわち図10に示すように、中間データ(表)36は、<1>項目情報、<2>罫線情報、<3>論理座標情報(合成前)、<4>縦横サイズの情報を含む。<1>〜<4>の各情報の構成を図11〜図14にそれぞれ示す。
まず、図11に示した<1>項目情報について説明する。中間データ(表)36の<1>項目情報は、合成する前の表のすべての項目の分だけ存在する。そして<1>項目情報は、(1)項目位置、(2)データ形式、(3)データ長、(4)文字列範囲、(5)配置情報、(6)フォント情報、(7)編集形式、(8)文字列データを含む。(1)〜(8)の各情報の詳しい説明は以下の通りである。
(1)項目位置:項目(文字列)の位置を示す座標情報(項目の最左最下の座標)。フォーマット定義情報の<1>項目情報の(2)項目の位置情報のコピーが格納される。
(2)データ形式:データの種類を示す値(テキストデータ、数値データ等)。フォーマット定義情報の<1>項目情報の(5)データ形式のコピーが格納される。
(3)データ長:文字列の長さを示す値(単位:バイト数)。フォーマット定義情報の<1>項目情報の(4)データ長のコピーが格納される。
(4)項目範囲:項目の範囲を示す値(x軸方向、y軸方向)。フォーマット定義情報の<1>項目情報の(3)項目領域長から算出される情報である。
(5)配置情報:中央揃えなど文字の配置に関する情報。フォーマット定義情報の<1>項目情報の(7)配置情報のコピーが格納される。
(6)フォント情報:フォント名やフォントサイズを示す情報。フォーマット定義情報の<1>項目情報の(6)フォント情報のコピーが格納される。
(7)編集形式:データを編集して出力する場合の編集形式を示す情報。フォーマット定義情報の<1>項目情報の(8)編集形式のコピーが格納される。
(8)文字列データ:文字列データが格納される。フォーマット定義情報の<1>項目情報の(9)レコード内位置が示す情報と(4)データ長に基づいて印刷データのレコードを読み取り、取得した文字列データが格納される。
次に、中間データ(表)36の<2>罫線情報のデータ構造は、図12に示すように(1)種別、(2)位置情報を含む構造となっている。(1)、(2)の各情報の詳しい説明は以下の通りである。
(1)種別:罫線、枠、網掛けを識別する情報。フォーマット定義情報の<2>罫線情報の(1)種別のコピーが格納される。
(2)位置情報:罫線、枠、網掛けの位置や範囲を示す情報で、開始位置(X1, Y1)、終了位置(X2, Y2)から成る。尚、枠、網掛けの場合、開始位置は最左最上の座標を示し、終了位置は最右最下の座標を示す。フォーマット定義情報の<2>罫線情報の(2)位置情報のコピーが格納される。
次に、中間データ(表)36の<3>論理座標情報(合成前)のデータ構造は、図13に示すように(1)登録数、(2)項目位置のx座標、(3)項目位置のy座標、を含む構造となっている。(1)〜(3)の各情報の詳しい説明は以下の通りである。
(1)登録数:<1>項目情報の数。
(2)項目位置のx座標:項目(文字列)の位置を示す座標(項目の最左最上の座標)のx座標。つまり、フォーマット定義情報の<1>項目情報の(2)項目の位置情報の座標情報のうちのx座標で、中間データ(表)36の<1>項目情報に対応して登録数分格納されている。
(3)項目位置のy座標:項目(文字列)の位置を示す座標情報(項目の最左最上の座標)のy座標。つまり、フォーマット定義情報の<1>項目情報の(6)フォント情報からフォントサイズを算出し、フォーマット定義情報の<1>項目情報の(2)項目の位置情報の座標のうちのy座標から、該フォントサイズ分減算した値。中間データ(表)36の<1>項目情報に対応して登録数分格納されている。
次に、中間データ(表)36の<4>縦横サイズのデータ構造は図14に示すように(1)縦サイズ、(2)横サイズを含む構造となっている。(1)、(2)の各情報の詳しい説明は以下の通りである。
(1)縦サイズ:中間データに対応する表の縦サイズを示す値。
(2)横サイズ:中間データに対応する表の横サイズを示す値。
以上のように、図10〜図14を参照して中間データ(表)36のデータ構造について説明した。次に、中間データ管理情報生成部31にて用いられる表合成制御情報37のデータ構造について説明する。
表合成制御情報37は、ユーザ等によって予め設定される表合成に関する情報である。図15に表合成制御情報27のデータ構造を示す。表合成制御情報27は、(1)用紙サイズ種別、(2)用紙方向、(3)配置属性、(4)配置方向、を含む。(1)〜(4)の各情報の詳しい説明は以下の通りである。
(1)用紙サイズ種別:合成した表を印刷する際に利用する用紙サイズを指定する情報。省略の場合は「A4」。
(2)用紙方向:合成した表を印刷する際に利用する用紙方向を指定する情報。省略の場合は「ポートレート(縦表示)」。
(3)配置属性:表を合成する際の配置属性(2UPか4UPか)を指定する情報。省略の場合は「合成しない」。
(4)配置方向:表を合成する際の配置方向(下方向か右方向か)を指定する情報。省略の場合は「下方向」。尚、当指定は、「(3)配置属性」に「4UP」を指定している場合だけ有効とする。「2UP」の場合、「(2)用紙方向」の指定に従い、ポートレートなら下方向、ランドスケープ(横表示)なら右方向とする。
図16に、表合成制御情報37の一例を示す。(1)用紙サイズがA4,(2)用紙方向がポートレート、(3)配置属性が4UP,(4)配置方向が右方向、となっている。
次に、中間データ管理情報生成部31が生成する中間データ管理情報39について説明する。図17に中間データ管理情報39のデータ構造を示す。中間データ管理情報39は、(1)用紙サイズ種別、(2)用紙方向、(3)配置属性、(4)配置方向、(5)中間データの合成後の縦横サイズ、(6)中間データへの参照情報、を含む。(1)〜(6)の各情報の詳しい説明は以下の通りである。
(1)用紙サイズ種別:合成した表を印刷する際に利用する用紙サイズを指定する情報。表合成制御情報37の(1)用紙サイズ種別のコピーが格納される。
(2)用紙方向:合成した表を印刷する際に利用する用紙方向を指定する情報。表合成制御情報37の(2)用紙方向のコピーが格納される。
(3)配置属性:表を合成する際の配置属性(2UPか4UPか)を指定する情報。表合成制御情報37の(3)配置属性のコピーが格納される。
(4)配置方向:表を合成する際の配置方向(下方向か右方向か)を指定する情報。表合成制御情報37の(4)配置方向のコピーが格納される。
(5)中間データ合成後の縦横サイズ:2UP/4UP後の縦と横のサイズの情報。算出方法については、図18〜図22を参照して説明する。
(6)中間データへの参照情報:それぞれの中間データ(表)への参照情報(リンク)が格納される。
さて、表1、表2、表3、表4の4つの表をA4縦で4UPに合成する場合に、上記(5)の中間データ合成後の縦横サイズを求める方法について図18〜図22を参照して説明する。尚、合成前の各表はそれぞれ、表1はA4、ポートレート、表2はA4、ランドスケープ、表3はA4,ランドスケープ、表4はA4ポートレートであるとする。
中間データ管理情報39は、まず表合成制御情報37の(1)用紙サイズ種別、(2)用紙方向、(3)配置属性、(4)配置方向をそれぞれコピーし、中間データ管理情報39の(1)用紙サイズ種別、(2)用紙方向、(3)配置属性、(4)配置方向にそれぞれ格納する。また、各中間データ(表)36への参照情報を中間データ管理情報39の(6)中間データへの参照情報に格納する。これにより、図18のようになる。
次に、(6)中間データへの参照情報を元に、各中間データ(表)36を参照し、中間データ(表)36の<4>縦横サイズから、中間データに対応する表のサイズ(縦、横)を抽出する。抽出した表1〜表4のサイズの例を図19に示す。表1は、縦サイズ:16258(単位:1/1440インチ)、横サイズ:11333(単位:1/1440インチ)である。表2は、縦サイズ:11333(単位:1/1440インチ)、横サイズ:16258(単位:1/1440インチ)である。表3は、縦サイズ11333(単位:1/1440インチ)、横サイズ16258(単位:1/1440インチ)である。表4は、縦サイズ:16258(単位:1/1440インチ)、横サイズ:11333(単位:1/1440インチ)である。尚、これらの縦横サイズは、A4のサイズ210mm×297mmに5mmの余白を設けて、A4サイズを200mm×287mmとし、これらの長さを1/1440インチに単位変換したものである。
中間データに対応する表のサイズを抽出するのを手順1とし、手順2以降、図20を参照して説明する。手順1で求めた各表のサイズから、A4縦、横のどちらでも配置可能な1区画を求める(図20、手順2)。上記表1〜表4を合成する例の場合、縦、横の最長のサイズが16258(単位:1/1440インチ)なので、16258(単位:1/1440インチ)×16258(単位:1/1440インチ)の正方形となる。
次に、1区画を印刷する用紙と同じ比率にする。上記表1〜表4を合成する例の場合、印刷する紙がA4、用紙方向がポートレート(縦)であるため、縦方向に下駄を履かせて縦を拡大する(図20、手順3)。つまり、1区画が、縦21145(単位:1/1440インチ)×横16258(単位:1/1440インチ)となる。手順3で求めた1区画分を合成して、4UPを生成する(図20、手順4)。これにより、縦42270(単位:1/1440インチ)×横32516(単位:1/1440インチ)が合成後の縦横サイズとなる。この合成後の縦横サイズは、実際のA4サイズの用紙の大きさより大きなサイズとなっている(A4サイズの用紙の大きさは16258(単位:1/1440インチ)×11333(単位:1/1440インチ))。しかし、用紙の縦横サイズと合成後の縦横サイズは比率が同一であるため、印刷の際には合成後の縦横サイズをそのまま縮小すればよい。このように、適当な合成後の縦横サイズを求め、中間データ管理情報39の(5)中間データ合成後の縦横サイズに格納する。
以上のように、(5)中間データ合成後の縦横サイズの値が縦42270(単位:1/1440インチ)×横32516(単位:1/1440インチ)と求められたが(図21参照)、各手順に沿って求められる値のみを列挙すると以下のようになる。
・用紙サイズの比率: 16258: 11333(1.3:1)
・必要な1区画: 16258: 16258(1:1)(手順2)
・比率を合わせる: 21125: 16258(1.3:1)(手順3)
・合成後(4UP): 42270: 32516(1.3:1)(手順4)
以上のように、図17〜図21を参照して、中間データ管理情報39のデータ構造について説明した。
次に、同じく中間データ管理情報生成部31にて生成される、論理座標情報(合成後)38のデータ構造について説明する。
論理座標情報(合成後)38のデータ構造を図22に示す。論理座標情報(合成後)38は、(1)登録数、(2)項目位置のx座標、(3)項目位置のy座標、を含む構造となっている。(1)〜(3)の各情報の詳しい説明は以下の通りである。
(1)登録数:中間データ(表)36の<1>項目情報の数。中間データ(表)36の<3>論理座標情報(合成前)の(1)登録数のコピーが格納される。
(2)項目位置のx座標:合成後の項目(文字列)の位置を示す座標(項目の最左最上の座標)のx座標。中間データ(表)36の<1>項目情報に対応して登録数分格納される。
(3)項目位置のy座標:合成後の項目(文字列)の位置を示す座標(項目の最左最上の座標)のy座標。中間データ(表)36の<1>項目情報に対応して登録数分格納される。
上記(2)項目位置のx座標および(3)項目位置のy座標については、中間データ(表)36の<3>論理座標情報(合成前)の項目位置を示す情報に、それぞれ各区画に対応した座標の補正情報を加算して生成される。補正情報は、中間データ管理情報39の(3)配置属性、(4)配置方向、および(5)中間データ合成後の縦横サイズに基づいて、区画2、区画3、区画4についてそれぞれ求められる。1区画の横サイズをa、縦サイズをbとすると、図5(b)のような4UPの構成とすると、区画2、区画3、区画4の補正情報はそれぞれ、(a、0)、(0、b)、(a、b)となる。この補正情報を、<3>論理座標情報(合成前)の(1)項目位置のx座標、(2)項目位置のy座標にそれぞれ加算して、論理座標情報(合成後)38が生成される。
図23を参照して、論理座標情報(合成後)38の算出方法について説明する。
図23の上部に示すように、表1、表2、表3、表4をそれぞれ区画1、区画2、区画3、区画4に配置し、4UPの合成を行うとする。表1には項目A,項目Bが含まれ、表2には項目E、項目Fが含まれ、表3には項目P、項目Qが含まれ、表4には項目X、項目Yが含まれる。また、表を4UPに合成する前のそれぞれの項目の論理座標情報のx座標を、図23の下部に示す。すなわち、合成前のx座標はそれぞれ、項目Aは8640、項目Bは15840、項目Eは8640、項目Fは1440、項目Pは7200、項目Qは2880、項目Xは2880、項目Yは12960(以上、単位:1/1440インチ)である。
区画1および区画3の幅を27360(単位:1/1440インチ)とすると、区画2、区画4に配置される表2および表4の論理座標情報のx座標に対する補正情報は27360となる。この補正情報を表2および表4に含まれる項目の合成前の論理座標情報のx座標にそれぞれ加算して、合成後の論理座標情報を求める。すなわち、合成後の論理座標情報のx座標はそれぞれ、項目Aは8640、項目Bは15840、項目Eは36000、項目Fは28800、項目Pは7200、項目Qは2880、項目Xは30240、項目Yは40320(以上、単位:1/1440インチ)となる。
論理座標情報(合成後)38のy座標(論理座標情報(合成後)38の(3)項目位置のy座標)についても、x座標(論理座標情報(合成後)38の(2)項目位置のx座標)と同様に求めることができる。
以上のように、図22、図23を参照して、中間データ管理情報生成部31で生成される論理座標情報(合成後)38のデータ構造について説明した。
次に、セル定義情報生成部32にて用いられるセル制御情報40のデータ構造について説明する。
セル制御情報40は、生成するスプレッドシートのフォーマット定義を決定するために、ユーザ等によって予め設定される情報である。図24に、セル制御情報40のデータ構造を示す。セル制御情報40は、(1)基本セル幅、(2)基本セル高さ、(3)丸め幅、(4)丸め高さ、を含む。(1)〜(4)の各情報の詳しい説明は以下の通りである。
(1)基本セル幅:生成するスプレッドシートのセル幅(列幅)を決定する際に基本となるセル幅の値。レイアウトを保証したまま、なるべく無駄なセルが生成されないように、帳票によってカスタマイズ可能。省略の場合は、「960(単位:1/1440インチ)」となる。
(2)基本セル高さ:生成するスプレッドシートのセル高さ(行高さ)を決定する際に基本となる値。レイアウトを保証したまま、なるべく無駄なセルが生成されないように、帳票によってカスタマイズ可能。省略の場合は、「240(単位:1/1440インチ)」となる。
(3)丸め幅:生成するスプレッドシートのセル幅を決定する際に、項目の微妙なx座標の違いにより無駄なセルを生成しないための値。項目の微妙なx座標の違いによる無駄なセル生成されないように、帳票によってカスタマイズ可能。省略の場合は、「144(単位:1/1440インチ)」となる。
(4)丸め高さ:生成するスプレッドシートのセル高さを決定する際に、項目の微妙なy座標の違いにより無駄なセルを生成しないための値。項目の微妙なy座標の違いによる無駄なセル生成されないように、帳票によってカスタマイズ可能。省略の場合は、「144(単位:1/1440インチ)」となる。
以上、図24を参照してセル制御情報40のデータ構造について説明した。ところで、セル定義情報生成部32は、図22で説明した論理座標情報(合成後)38と図24に示したセル制御情報40とから、セル定義情報41を生成する。セル定義情報41は、生成するスプレッドシートのセル幅(列幅)、セル高さ(行高さ)を規定した、基本となるフォーマット定義である。そこで次に、図25を参照してセル定義情報41について説明する。
セル定義情報41のデータ構造は、(1)基本セル幅、(2)基本セル高さ、(3)セル幅、(4)セル高さ、を含む。(1)〜(4)の各情報の詳しい説明は以下の通りである。
(1)基本セル幅:生成するスプレッドシートのセル幅(列幅)を決定する際に基本となるセル幅の値。セル制御情報40の(1)基本セル幅のコピーが格納される。
(2)基本セル高さ:生成するスプレッドシートのセル高さ(行高さ)を決定する際に基本となるセル高さの値。セル制御情報40の(2)基本セル高さのコピーが格納される。
(3)セル幅:論理座標情報(合成後)38とセル制御情報40とから算出される、生成するスプレッドシートのセル幅(列幅)の値が、カンマ区切りの形式で列数分、格納される。
(4)セル高さ:論理座標情報(合成後)38とセル制御情報40とから算出される、生成するスプレッドシートのセル高さ(行高さ)の値が、カンマ区切りの形式で行数分、格納される。
上記(3)セル幅の算出について、図26、図27を参照して説明する。まず、図26に示すように、論理座標情報(合成後)38を昇順にソートする。図26は、図25に示した論理座標情報(合成後)38を昇順にソートしたものを示すものである。ソート後、論理座標情報は、項目Q,項目P、項目A,項目B,項目F,項目X,項目E,項目Yの順に並んでいる。ソート後の情報を用いて、生成するスプレッドシートのセル幅を算出していく。論理座標情報(合成後)38のソート後の、生成するスプレッドシートのセル幅の算出は基本的には次の(a)〜(c)により行われる。
(a)ソート後の論理座標情報(合成後)38のうち、前後する論理座標情報の差を求めることにより、項目間の距離を算出する。
(b)(a)で算出した項目間の距離が、セル制御情報40の(3)丸め幅より小さい場合にはセル幅(列幅)を設定せず、(a)に戻り次の項目間の距離を算出する。
(c)(a)で算出した項目間の距離が、セル制御情報40の(3)丸め幅より大きい場合で、かつ、セル制御情報40の(1)基本セル幅の2倍以上の場合には、基本セル幅でセル幅(列幅)を設定する。項目間の距離が、セル制御情報40の(3)丸め幅より大きい場合で、かつ、項目間の距離が、セル制御情報40の(1)基本セル幅の2倍未満の場合には、項目間の距離でセル幅(列幅)を設定する。そして、(a)に戻り次の項目間の距離を算出する。
(a)〜(c)により、生成するスプレッドシートのフォーマット定義を決定することについて、図27を参照して具体的に説明する。
基本概念は以下の通りである。
・(基本セル幅×2)以上の場合は、基本セル幅でセル幅(列幅)を設定する。
・(基本セル幅×)未満の場合は、項目間の距離をセル幅(列幅)として設定する。
図27において、まず項目A,項目B,項目C,項目Dについて論理座標情報(合成後)38のx座標でソートすると、項目A,項目B,項目C,項目Dの順になる。
一番最初の項目Aについては、項目Aのx座標の値を項目間の距離とする。項目間の距離は、丸め幅以上で、かつ、基本セル幅の2倍未満であるため、上記(c)により項目間の距離をセル幅(列幅)として設定する。つまり、列Aのセル幅が、スプレッドシートの左端から項目Aの左端の距離に決定する。
次に、項目Aと項目Bの項目間の距離を、論理座標情報(合成後)38の差から算出する。項目Aと項目Bの項目間の距離は、丸め幅以上で、かつ、基本セル幅の2倍未満であるため、上記(c)により、列Aと同様に、列Bのセル幅は、項目Aと項目Bの項目間の距離で決定する。
次に、項目Bと項目Cの項目間の距離を、論理座標情報(合成後)38の差から算出する。項目Bと項目Cの項目間の距離は、丸め幅以上で、かつ、基本セル幅の2倍以上であるため、列Cのセル幅を基本セル幅に決定する。更に、列Cの右端から項目Cの左端までの距離は、丸め幅以上で、かつ、基本セル幅の2倍未満であるため、列Dのセル幅を、列Cの右端から項目Cの左端までの距離に決定する。
次に、項目Cと項目Dの項目間の距離を、論理座標情報(合成後)38の差から算出する。項目Cと項目Dの距離は、丸め幅未満であるため、セル(列)は設定せず、次の項目間の距離の算出に処理を進める。これにより、項目Cと項目Dの距離のように短い距離に対応する列は設定されず、生成されるスプレッドシートのフォーマット定義には細かいセルが設定されるのを防ぐことができる。
以下同様に項目間の距離を算出することにより、列E,列Fのセル幅(列幅)が決定される。また、セル幅の算出と同様に、行についてもセル高さ(行高さ)を決定することができる。以上のように、生成するスプレッドシートのフォーマット定義が決定される。そして、セル定義情報41の(3)セル幅には、列A,列B,列C,列D、列E,列Fの幅の値がそれぞれカンマで区切られて格納される。同様に、セル定義情報41の(4)セル高さには、行1、行2、行3、行4、行5の高さの値がそれぞれカンマで区切られて格納される。
以上のように、図25〜図27を参照してセル定義情報41のデータ構造と、生成するスプレッドシートのフォーマット定義のセル幅セル高さの算出の方法について説明した。
次に、セル情報42について説明する。上述したが、セル情報42は、スプレッドシートの各セルに対応する情報で、中間データ合成部33により生成される情報である。
まず、中間データ合成部33では、図28に示すような、何行目かを示す情報ごとに、各行のセル情報を順に格納する記憶領域を確保する。この領域は、たとえば図29における「行情報」に1行目の示す情報が格納され、該「行情報」の下層に1行目1列めのセル情報、1行目2列目のセル情報、・・・と順に並ぶ構成である。そして、中間データ合成部33では、中間データ(表)36の各項目情報について、対応する項目が配置されるセルを特定し、該セルに対応する図28に示すセル情報格納領域にセル情報42を格納する処理を行う。以下では、セル情報42の構造について詳しく説明する。
まず、図28にセル情報42のデータ構造を示す。セル情報は、それぞれ(1)データ、(2)書式、(3)フォント、(4)配置属性、(5)セル結合、(6)罫線、(7)網掛け、を含む。(1)〜(7)の各情報の詳しい説明は以下の通りである。
(1)データ:セルのデータそのもの。中間データ(表)36の<1>項目情報の(8)文字列データを、中間データ(表)36の<1>項目情報の(2)データ形式に基づいて、必要に応じて変換したデータでが格納される。
(2)書式:該当のセルの書式を指定する情報である。中間データ(表)36の<1>項目情報の(7)編集形式に基づいて生成される、生成するスプレッドシートにおける該当セルの書式の情報が格納される。
(3)フォント:フォント名やフォントサイズを示す情報。中間データ(表)36の<1>項目情報の(6)フォント情報のコピーが格納される。
(4)配置属性:中央揃えなど文字の配置に関する情報。中間データ(表)36の<1>項目情報の(5)配置情報のコピーが格納される。
(5)セル結合:セルの結合範囲を示す情報である。セルの結合の方法等については、図29を参照して後に説明する。
(6)罫線:該当セルの罫線について示す情報である。中間データ(表)36の<2>罫線情報の(1)種別、(2)位置情報に基づいて、罫線の開始位置および終了位置の範囲を算出し、該範囲に該当セルが含まれる場合に、罫線についての情報が格納される
(7)網掛け:該当セルの網掛けについて示す情報である。中間データ(表)36の<2>罫線情報の(1)種別、(2)位置情報に基づいて、網掛けの開始位置および終了位置の範囲を算出し、該範囲に該当セルが含まれる場合に、網掛けについての情報が格納される。
さて、上記(5)のセルの結合について図29を参照して説明する。
図29の(i)に示す、表1と表2を2UP(A4縦方向、区画1の下に区画2を配置する)で合成するとする。
この場合に、中間データ生成部30、中間データ管理情報生成部31、セル定義情報生成部32を経て、表1と表2の合成後のフォーマット定義、すなわち生成するスプレッドシートのセル幅、セル高さが(ii)のように決まる。
そして中間データ合成部33では、まず、この基本となる生成するスプレッドシートのフォーマット定義の上に、中間データ(表)36の<1>項目情報の(1)項目位置から、<1>項目情報の(8)文字列データを配置する。すると、(iii)のようになる。ここで、例えば一番上の行の「家族情報」、「本人」の次の「配偶者」の項目については、「配偶者」の文字列が二列にまたがってしまっている。このことは、中間データ(表)36の<1>項目情報の(1)項目位置と、中間データ(表)36の<1>項目情報の(4)項目範囲と、セル定義情報41から判断することができる。このように、セル定義情報41で規定される、生成するスプレッドシートのフォーマット定義において、文字列が複数のセルにまたがって表示されてしまう場合に、項目範囲に基づいて、対応するセルを結合する。図29の(iv)では、「配偶者」、「△□花子」、「1955/10/10」、「診療記録」、「年月日」、「病院名」、「支払額」、「1988/08/08」、「○×病院」、「¥10,000」の文字列に対応するセルがそれぞれ結合範囲と特定される。そして、図29(v)のようにセル結合が行われる。
図28の「セル情報42の<2>セル情報(5)セル結合」では、上述のように結合されたセル範囲の情報が格納される。例えば、図29の(iv)の「配偶者」の文字列は1行目3列と1行目4列のセルを結合するため、「(1,3),(1,4)」などという情報が「セル情報42の<2>セル情報(5)セル結合」に格納される。
以上のように、図3に示した本実施形態のスプレッド生成システム1において、印刷データを入力とし、合成データであるセル情報42が生成されるまでをデータ構造を参照して詳しく示した。このあと、本実施形態では、1枚のスプレッドシート上の全セル分のセル情報42を、Extensible Markup Language(以下、XMLと略す)形式に変換し、XML形式データを更にスプレッドシート形式に変換してスプレッドシートを出力する。XML形式のデータおよびスプレッドシート形式のデータについては、後述する。
以上、図3に示した本実施形態のスプレッドシート生成システム1における各データの構造について、図6〜図29を参照して詳細に説明した。
以上のように、本実施形態のスプレッドシート生成システム1のシステム構造、該システムにより使用される、または、生成されるデータの構造について明らかとなった。そこで、以下、システムの動作フローについて詳しく説明する。
図30に本実施形態のスプレッドシート生成システム1の全体のシステムフローを示す。
まず、S301で、中間データ生成部30は、フォーマット定義情報と印刷データ35から表合成用の中間データ(表)36を生成する。次に、S302で、中間データ管理情報生成部31は、表合成制御情報37と中間データ(表)36から中間データ管理情報39および論理座標情報(合成後)38を生成する。次に、S303で、セル定義情報生成部32は、論理座標情報(合成後)38とセル制御情報40とからセル定義情報41を生成する。次に、S304で、中間データ合成部33は、中間データ(表)36と、中間データ管理情報39と、セル定義情報41とから、1枚のスプレッドシート上の全セル分のセル情報42を含む合成データを生成する。そして、最後にS305で、スプレッドシート出力部34は、合成データの各セル情報42をそれぞれスプレッドシート形式のデータに変換して、スプレッドシートを生成する。
S301については、図31を参照して詳しく説明する。S302については、図32を参照して詳しく説明する。S303については、図33〜図37を参照して詳しく説明する。S304については、図38〜図45を参照して詳しく説明する。S305については、図46を参照して詳しく説明する。
まず、図31を参照して、S301の中間データ生成処理について説明する。
まず、S311で、フォーマット定義情報と印刷データ35を読み込む。S312で、中間データ(表)36を生成する。詳しくは、中間データ(表)36の<1>項目情報(図11)、<2>罫線情報(図12)、<3>論理座標情報(合成前)(図13)、<4>縦横サイズ(図14)を生成する。
中間データ(表)36の<1>項目情報の各情報は次のように生成される。(1)項目位置は、フォーマット定義情報の<1>項目情報の(2)項目位置情報のコピーが格納される。(2)データ形式は、フォーマット定義情報の<1>項目情報の(5)データ形式のコピーが格納される。(3)データ長は、フォーマット定義情報の<1>項目情報の(4)データ長のコピーが格納される。(4)項目範囲は、フォーマット定義情報の<1>項目情報の(3)項目領域長から算出される。(5)配置情報は、フォーマット定義情報の<1>項目情報の(7)配置情報のコピーが格納される。(6)フォント情報は、フォーマット定義情報の<1>項目情報の(6)フォント情報のコピーが格納される。(7)編集形式は、フォーマット定義情報の<1>項目情報の(8)編集形式のコピーが格納される。(8)文字列データは、フォーマット定義情報の<1>項目情報の(9)レコード内位置が示す情報と(4)データ長に基づいて、印刷データのレコードを読み取り、取得した文字列データが格納される。
また、中間データ(表)36の<2>罫線情報の各情報は次のように生成される。(1)種別は、フォーマット定義情報の<2>罫線情報の(1)種別のコピーが格納される。(2)位置情報は、フォーマット定義情報の<2>罫線情報の(2)位置情報のコピーが格納される。
また、中間データ(表)36の<3>論理座標情報(合成前)の各情報は次のように生成される。(1)登録数は、<1>項目情報の数となる。(2)項目位置のx座標は、フォーマット定義情報の<1>項目情報の(2)項目の位置情報の座標情報のうちのx座標を、登録数分カンマで区切って格納されたものである。(2)項目位置のy座標は、フォーマット定義情報の<1>項目情報の(2)項目の位置情報の座標情報のうちのy座標を、登録数分カンマで区切って格納されたものである。
また、中間データ(表)36の<4>縦横サイズの各情報は次のように生成される。中間データ(表)36に対応する表の縦サイズを、合成前の表において最右最下の位置にある項目の位置情報から算出し、(1)縦サイズに格納する。同様に、横サイズについても算出し、(2)横サイズに格納する。
次に、S313で、生成した中間データへの参照情報(リンク)を一時記憶に保存しておく。
以上、図30のS301について説明した。次に、図30のS302について、図32を参照して説明する。
S302は、中間データ管理情報39を生成する処理を行うが、まずS321で、表合成制御情報37の各情報を、中間データ管理情報39の対応する情報格納欄にコピーして格納する。図15に示したように、表合成制御情報27は、(1)用紙サイズ種別、(2)用紙方向、(3)配置属性、(4)配置方向、を含む構造となっている。これらの情報をコピーし、中間データ管理情報39の(1)用紙サイズ種別、(2)用紙方向、(3)配置属性、(4)配置方向、(図17参照)にそれぞれ格納する。次にS322で、各表の一番長い縦と横のサイズを特定する。中間データ(表)36の<4>縦横サイズから、各表の一番長い縦と横のサイズを特定することができる。次にS323で、S321で表合成制御情報37からコピーした、用紙サイズと用紙方向から、生成するスプレッドシートの縦サイズと横サイズの比率を算出する。
次に、S324で、縦と横のサイズが収まる最少の1区画のサイズを算出する。そして、S325で、S321で表合成制御情報37からコピーした、(3)配置属性から、2UP、4UPで配置するかを特定し、生成するスプレッドシートの縦横サイズを算出する。表の合成を行わない場合には、1つの表の縦横サイズがそのまま生成するスプレッドシートの縦横サイズとなる。そして該算出した情報を、中間データ管理情報39の(5)中間データの合成後の縦横サイズ、に格納する。尚、S322〜S325の処理は、図20で説明した処理を行っている部分である。
次にS326で、図31のS313で一時保存しておいた中間データへの参照情報(リンク)を中間データ管理情報39の(6)中間データへの参照情報に格納する。
その後、S327〜S329で、論理座標情報(合成後)38を生成する処理を行う。
S327で、S321でコピーした(3)配置属性により、2UPか4UPかを特定し、2UPの場合には2区画数分、4UPの場合には4区画数分、S328、S329の処理を行うように判断する。
S328では、座標の補正情報について算出する。すなわち、S321でコピーした、(3)配置属性、(4)配置方向、および、S325で算出したスプレッドシートの縦横サイズに基づいて、区画2〜区画4の補正情報をそれぞれ算出する。そして、S329で、中間データ(表)36の<3>論理座標情報(合成前)(図13)に対応する区画の補正情報を加算し、論理座標情報(合成後)38を生成する。S327〜S329の処理は図23を参照して説明した通りである。
次に、図30のS303について、図33〜37を参照して説明する。
S303は、生成するスプレッドシートのフォーマット定義であるセル定義情報41を生成する処理である。まず、S331とS332で、フォーマット定義のうち、セル幅(列幅)を算出する処理を行う。次にS333とS334で、フォーマット定義のうち、セル高さ(行高さ)を算出する処理を行う。セル幅を算出する処理とセル高さを算出する処理は同様な処理であるので、S331とS332について詳しく説明し、S333とS334については簡単に説明することにする。
まず、S331において、論理座標情報(合成後)38について、x座標の値が格納されている、論理座標情報(合成後)38の(2)項目位置のx座標の値をもとに昇順にソートする。次に、S332で、セル幅(列幅)の算出処理を行う。
S332については、図34に更に詳しいフローを示す。
S341で、処理フローを実行するための制御情報を初期化する。制御情報とは、フローを制御するための一時的な情報である。この制御情報は、どの列の列幅を算出しているかを示すための、列位置カウンタと、前回の項目位置を記憶するための情報、論理座標情報(合成後)38に登録されている情報をいくつ処理したかをカウントする処理数カウンタ、の三つがある。以下、列位置カウンタを「制)列位置カウンタ」、前回の項目位置を「制)前回の項目位置」、処理数カウンタを「制)処理数カウンタ」と表記することにする。S341で、「制)列位置カウンタ」および「制)前回の項目位置」は0に初期化し、「制)処理数カウンタ」は1に初期化する。
次に、S342で、「制)処理数カウンタ」の値が、論理座標情報(合成後)38の(1)登録数に格納されている値以下であるか否かが判断される。S342でNoの場合S345に進む。S342でYesの場合、S343に進む。S343で、論理座標情報(合成後)38の(2)項目位置のx座標、の値を取り出す。そしてS344に進む。
S344では、セル幅(列幅)を決定する処理を行うが、より詳しく図35を参照して説明する。
まず、S351で、項目間の距離を算出する。すなわち、S343で取り出したx座標の値と制御情報である「制)前回の項目位置」の差を求める。次にS352で、S351で求めた項目間の距離が、セル制御情報40の(3)丸め幅より大きいか否かを判断する。S352でNoの場合には、S359に進む。S352でYesの場合には、S353に進む。S353では、S351で求めた項目間の距離が、セル制御情報40の(1)基本セル幅の2倍以上であるか否かが判断される。S353でNoの場合にはS357に進む。S353でYesの場合にはS354に進む。
S354では、「制)列位置カウンタ」が示す列のセル幅(列幅)を基本セル幅に決定する。そして、S355で「制)列位置カウンタ」を更新する。次に、S356に進み、項目間の距離を更新する。すなわち、項目間の距離から基本セル幅を減算し、求めた結果を項目間の距離とする。そして、S353に戻る。
S353で、項目間の距離が基本セルの2倍未満であると判断された場合にS357に進む。S357では、「制)列位置カウンタ」が示す列のセル幅(列幅)を項目間の距離に決定する。そして、S358に進み、「制)前回の項目位置(X)」と「制)列位置カウンタ」を更新する。
S352でNoと判断された場合、またはS358の後、S359に進み、S359では、「制)処理数カウンタ」を1インクリメントして、図34の呼ばれたステップ(S344またはS346)に戻る。
図34の説明に戻る。S344の処理の後、S342に戻り、「制)処理数カウンタ」が論理座標情報の登録数以上となると、S342からS345に進む。
S345では、生成するスプレッドシートのサイズの右端を、項目位置として、x座標の値を取り出す。S345およびS346は最終列のセル幅(列幅)を決定する処理である。S346では、S344と同一の処理を行う。以上の処理により、生成するスプレッドシートのすべての列のセル幅(列幅)が決定される。
尚、以上に説明をした、図34と図35の処理を含む、図33のS331およびS332の処理は、図26、図27を参照して説明した処理に対応する。
同様に、図33のS333とS334の処理を行い、生成スプレッドシートのすべての行について、セル高さ(行高さ)を決定する。まず、S333で、論理座標情報(合成後)について、y座標の値が格納されている、論理座標情報(合成後)38の(2)項目位置のy座標の値をもとに昇順にソートする。次にS334でセル高さ(行高さ)の算出処理を行う。
S334の詳しいフローを図36に示す。図36に示したフローは、図34に示したフローと同一の流れであり、S361、S362,S363,S364,S365,S366の各ステップは、図34のS341、S342,S343,S344,S345,S346にそれぞれ対応して同様の処理を行う。また特に、S363とS366の詳しいフローは図37に示している。図37に示したフローは、図35に示したフローと同一の流れである。S371、S372,S373,S374,S375,S376、S377,S378、S379の各ステップは、S351、S352,S353,S354,S355,S356、S357,S358、S359にそれぞれ対応し、同様の処理を行う。
以上のように、図33〜図37を参照して、図30のS303の処理である、セル定義情報41を生成する処理のフローについて詳しく説明した。
次に、図30のS304の処理である中間データ合成処理について図38〜図45を参照して詳しく説明する。
中間データ合成部33では、S304の処理により、複数の中間データ(表)36を、1枚のスプレッドシートに対応するデータにする処理を行う。
中間データ合成部33は、図38に示すように、まずS380で、カウンタを0に初期化する。次に、S381で、カウンタが中間データ(表)36のデータ数未満か否かを判断する。すなわち、例えば2UPの場合にはカウンタが2未満か否かを判断し、例えば4UPの場合にはカウンタが4未満か否かを判断する。S381で、Noの場合、すべての中間データ(表)36を処理したことになるため、処理を終了する。S381でYesの場合、S382に進む。
S382では、中間データ(表)36の<1>項目情報に含まれる(1)項目位置を補正するための情報を算出する。すなわち、中間データ管理情報39の(3)配置属性、(4)配置方向、および(5)中間データの合成後の縦横サイズに基づいて、項目情報を配置する位置を補正する補正情報を算出する。
次に、S383で、項目カウンタを0に初期化する。次にS384で、項目カウンタが中間データ(表)36の項目情報の登録数以上である場合(項目情報の登録数は、中間データ(表)36の<3>論理座標情報(合成前)の(1)登録数から得られる)、S391に進む。S391で、カウンタをインクリメントして、S381に戻る。S384で、項目カウンタが中間データの項目情報(表)36の登録数未満である場合、S385に進む。S385では、S382で算出した補正情報を用いて、各項目の位置をスプレッドシート上のどのセルに配置されるかということを変換する処理を行う。そして次に、S386〜S390では、S385で特定されたセル位置に対し、セル情報42の各種情報を生成し、図28に示した情報格納領域に格納する処理を行う。
すなわち、まずS386では、S385で算出されたセル位置に対応するセル情報42の(1)データに(図28のセル情報のデータ構造参照)、中間データ(表)36の<1>項目情報の(8)文字列データを数値等に変換して格納する。同様に、S387では、S385で算出されたセル位置に対応するセル情報42の(2)書式に、中間データ(表)36の<1>項目情報の(7)編集形式に基づいて、生成するスプレッドシートの書式を生成して、格納する。S388では、S385で算出されたセル位置に対応するセル情報42の(3)フォントおよび(4)配置属性にそれぞれ、中間データ(表)36の<1>項目情報の(6)フォント情報、(5)配置情報をコピーして格納する。S389では、中間データ(表)36の<1>項目情報の(1)項目位置と(4)項目範囲およびセル定義情報41から、中間データ(表)36の項目情報に対応する項目が占めるセル範囲を特定し、セル情報42の(5)セル結合に格納する。S390では、中間データ(表)36の<2>罫線情報に基づいて、罫線や網掛けの開始位置および終了位置を特定し、セル情報42の(6)罫線または(7)網掛けに格納する。
S390の後、S392に進み、項目カウンタを1インクリメントしてS384に戻る。以上、中間データ合成部33で行われる、中間データを合成する処理について説明した。更に、S385,S386,S387,S388,S389,S390についてそれぞれより詳しいフローを示して説明する。
まず、S385の、中間データ(表)36の項目情報に対応する項目の位置をセル位置に変換する処理について、図39と図40を参照して説明する。
図39のS393において、中間データ(表)36の<1>項目情報の(1)項目位置とS382で算出した補正情報を元に、項目位置が何列目になるかを次の(i)〜(iii)により算出する。
(i)まず、変数tmpを0で初期化する。
(ii)tmpと補正情報で補正した項目の位置のx座標値を比較する。
(iii)tmpが補正情報で補正した項目位置のx座標値より小さい場合には、セル定義情報41のセル幅(列幅)を加算し、(ii)に戻る。
(iv)tmpが補正情報で補正した項目位置のx座標値より大きい場合、すなわち、x座標の値がtmpより小さくなった時点の列を該項目が位置する列とする。
つまり、(i)〜(iv)では、項目位置がどのセルに含まれるか、セルの境界(図40の△印)と項目位置を順番に比較しながら、項目位置がセルの境界値より小さくなった時点で列を特定する、という処理を行っている。
(i)〜(iv)により列を特定する例を図40に示す。今、項目Cの列の特定をするとする。この場合に、項目Cの左端のx座標値は、列A,列B,列Cのセル幅を順に加えていったものより大きい。しかし、列A,列B,列C,列Dを加えたものと、項目Cの左端のx座標値を比較すると、x座標値のほうが小さくなる。つまり、項目Cのx座標値は△4よりも小さい。そこで、列Dが項目Cのセル位置となることが特定される。
同様に、S394で、項目位置が何行目になるかを算出する。すなわち、次の(I)〜(IV)により算出する。
(I)まず、変数tmpを0で初期化する。
(II)tmpと補正情報で補正した項目の位置のy座標値を比較する。
(III)tmpが補正情報で補正した項目の位置のy座標値より小さい場合には、セル定義情報41のセル高さ(行高さ)を加算し、(II)に戻る。
(IV)tmpが補正情報で補正した項目の位置のy座標値より大きい場合、すなわち、y座標の値がtmpより小さくなった時点の行を該項目が位置する行とする。
S393およびS394の後、S395にて、算出したセル位置(行、列)を一時記憶に記憶する。
以上、図39、図40を参照して、S385の処理について説明した。
次に、セル情報42にデータを設定する処理である、S386の処理について、図41を参照して説明する。まず、S411で、中間データ(表)36の<1>項目情報の(8)文字列データから、文字列データを取り出す。次にS412で、中間データ(表)36の<1>項目情報の(2)データ形式が日付項目、または、時刻項目か否かを判断する。S412でYesの場合S413に進む。S412でNoの場合S414に進む。S413では、文字列データをシリアル値に変換する。そして、S416に進む。
S412でNoの場合、S414に進み、中間データ(表)36の<1>項目情報の(2)データ形式が数字項目か否かを判断する。S414でYesの場合S415に進む。S414でNoの場合、S416に進む。S415では、文字列データを数値文字列に変換する。このとき、符号の有無、全体桁数、小数点桁数などを考慮する。そしてS416に進む。
S416では、S413で変換された値、またはS416で変換された値、または、変換処理されなかった文字列データを、S385(S395)で算出されたセル位置に対応するセル情報42の(1)データに格納する。
以上、図41を参照して、S386の処理について説明した。次に、セル情報42に書式を設定する処理である、S387の処理について、図42を参照して説明する。まず、S421で、中間データ(表)36の<1>項目情報の(7)編集形式が数値編集か否かを判断する。S421でYesならS422に進む。S421でNoならS423に進む。S422で、数値編集に対するスプレッドシートの書式を生成する。これは例えば、図8に示した表において、項目情報における編集形式が「9999999」の場合、スプレッドシートの書式として「000000;000000」を生成することをいう。そしてS422の後、S428に進む。
S421でNoの場合、S423に進み、中間データ(表)36の<1>項目情報の(7)編集形式が日付、時刻編集か否かを判断する。S423でYesなら、S424に進む。S423でNoならS425に進む。S424で、日付、時刻編集に対するスプレッドシートの書式を生成する。そして、S424の後、S428に進む。
S423でNoの場合、S425に進み、中間データ(表)36の<1>項目情報の(7)編集形式が郵便番号編集か否かを判断する。S425でYesならS426に進む。S425でNoならS427に進む。S426で、郵便番号編集に対するスプレッドシートの書式を生成する。そして、S426の後、S428に進む。
S425でNoの場合、S427に進み、文字列データを示す書式を生成する。そして、S428に進む。
S428では、S422またはS424またはS426またはS427で生成したスプレッドシートの書式を、S385(S395)で算出されたセル位置に対応するセル情報42の(2)書式に格納する。
以上、図42を参照して、S387の処理について説明した。次に、セル情報42にフォント、配置属性を設定する処理であるS388の処理について図43を参照して説明する。まず、S431で、中間データ(表)36の<1>項目情報の(6)フォント情報を読み出し、S385(S395)で算出されたセル位置に対応するセル情報42の(3)フォントに格納する。次に、S432で、中間データ(表)36の<1>項目情報の(5)配置情報を読み出し、S385(S395)で算出されたセル位置に対応するセル情報42の(4)配置属性に格納する。
以上、図43を参照して、S388の処理について説明した。次に、セル結合の設定を行う処理であるS389の処理について図44を参照して説明する。まずS441で、中間データ(表)36の<1>項目情報の(1)項目位置をS382で算出した補正情報で補正した項目位置と、中間データ(表)36の<1>項目情報の(4)項目範囲とから、セル定義情報41を参照し、項目が占める範囲と対応するセルの範囲を特定する。次に、S442で、S441で特定したセル範囲をセルの結合範囲として、セル情報42の(5)セル結合に格納する。
以上、図44を参照して、S389の処理について説明した。
次に、罫線、網掛けの設定をする処理であるS390の処理について図45を参照して説明する。まず、S451で、中間データ(表)36の<2>罫線情報の(1)種別が罫線か否かを判断する。S451でYesならば、S452に進む。S451でNoならば、S453に進む。
S452では、中間データ(表)36の<2>罫線情報の(2)位置情報から、セル定義情報41を参照し、罫線の開始位置(X1,Y1)および罫線の終了位置(X2,Y2)がどの列、行に含まれるか特定する。そして、S455に進む。
S453では、中間データ(表)36の<2>罫線情報の(1)の種別が網掛けか否かを判断する。S453でNoなら処理を終了する。S453でYesなら、S454に進む。S454では、網掛け範囲の四隅の座標である、左上(X1,Y1),左下(X1,Y2),右上(X2、Y1),右下(X2,Y2)がどの列、行に含まれるか特定する。そして、S455に進む。
S455では、S452またはS454で特定したセル範囲を罫線または網掛け範囲として、セル情報42の(6)罫線または(7)網掛けにそれぞれ格納する。
以上のように、図38〜図45を参照して、図30のS304の処理である、中間データ(表)36を合成する処理について詳しく説明した。
次に、図30のS305の処理であるスプレッドシート生成処理について図46を参照して詳しく説明する。
まず、S460でセル情報42をポイントするポインタを初期化する。これにより、合成された表の1行1列目のセルの情報を格納したセル情報42をポイントすることになる。
次に、S461で、ポインタがポイントするところにセル情報があるか否かを判断する。セル情報がなければ、S468に進む。セル情報があれば、S462に進む。
S462〜S466では、セル情報42が含む(1)データ、(2)書式、(3)フォント、(4)配置属性、(5)セル結合、(6)罫線、(7)網掛けの情報をそれぞれXML形式に変換する処理を行う。すなわち、S462では、セル情報42の(1)データをXML形式で出力する。次にS463では、セル情報42の(2)書式をXML形式で出力する。次にS464では、セル情報42の(3)フォントおよび(4)配置属性をXML形式で出力する。S465では、セル情報42の(6)セル結合をXML形式で出力する。S466では、セル情報42の(6)罫線および(7)網掛けをXML形式で出力する。
そして、S466の後、S467でポインタを更新し、次のセル情報をポイントするようにしてS461に戻る。
以上のS460〜S467の処理により、すべてのセル情報がXML形式に変換される。そして、この後、S468ではXML形式で記載された表のデータを、スプレッドシートに変換する。S468のXML形式の表データをスプレッドシートに変換する処理は、既存のツール等を用いる。
また、S460〜S467で生成されるXML形式のデータは、S468で用いるツールにもよるが、概念的には例えば図47に示すようなデータとなる。XMLは、構造化言語と呼ばれる言語で、タグを用いてドキュメントデータの内容を区別することが可能であるため、セル情報42の各情報を、タグを用いて区別した形式となっている。
以上、図46を参照してS305について説明した。図30のS305によりスプレッドシートが生成され、本実施形態のスプレッドシート生成システム1からスプレッドシートが出力され、処理が完了することなる。
以上、本実施形態について図1〜図47を参照して詳細に説明した。
上述のように、本実施形態では、まず複数の表に対応する印刷データをそれぞれ変換し、複数の中間データを生成する。そして、該複数の中間データを合成し、1枚のスプレッドシートの全セル分のセル情報を含む合成データを生成する。更に、該合成データでの各セル情報をスプレッドシート形式に変換してスプレッドシートを生成する。このように本実施形態では、中間データを利用することにより、複数の表に対応する印刷データを1枚のスプレッドシートに出力することを可能とした。また、中間データを合成する際に、それぞれの表のレイアウトが崩れないようにする処理や無駄なセルが生成されないようにする処理を行うことにより、スプレッドシート生成後に手作業によるセルやレイアウトの調整が不要である。つまり、図48に示すように、二つの表、表1および表2を2UPで合成する場合に、それぞれの表のレイアウトを維持しつつ、かつ、細かい無駄なセルが生成されないようにスプレッドシートを生成することができる。これにより、本実施形態によれば、ユーザ等の作業効率を上げることができ、また印刷データの二次利用性を高めることができる、といえる。
尚、本発明は上記実施の形態に記載したことに限定されないことは言うまでもなく、本発明の趣旨を逸脱しない範囲において様々な変更が可能である。
図1から図48までを参照して説明した実施形態に関し、更に以下の付記を開示する。
(付記1)
情報処理装置に、
複数の表に対応する印刷データから、該各表に含まれる複数の項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成する、中間データ生成ステップと、
前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正する、合成後位置情報生成ステップと、
前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定する、フォーマット定義決定ステップと、
前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出し、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力する、合成ステップと、
前記合成データの各セル情報をそれぞれスプレッドシート形式のデータに変換し、前記スプレッドシートの全セル分のセル情報をスプレッドシート形式のデータとして、スプレッドシートを出力する、スプレッドシート出力ステップと、
を実行させることを特徴とするスプレッドシート生成プログラム。
(付記2)
前記セル制御情報は、基本セル幅、基本セル高さ、丸めセル幅、丸めセル高さを含む情報であって、
前記フォーマット定義決定ステップは、
まず、前記各項目の合成後の位置情報におけるx座標について該各項目をソートし、該ソートした項目について順にx座標値の差を求めることで項目間の距離を求め、該項目間の距離が、前記丸めセル幅未満である場合にはフォーマット定義における列を設定せず、該項目間の距離が該丸めセル幅以上でかつ前記基本セル幅の2倍以上である場合には、該基本セル幅で該フォーマット定義における列を設定し、該項目間の距離が該丸め幅以上でかつ該基本セル幅の2倍未満である場合には該項目間の距離で該フォーマット定義における列を設定し、前記x座標についてソートした全項目を処理した後、
前記各項目の合成後の位置情報におけるy座標について該各項目をソートし、該ソートした項目について順にy座標値の差を求めることで項目間の距離を求め、該項目間の距離が前記丸めセル高さ未満である場合にはフォーマット定義における行を設定せず、該項目間の距離が該丸め高さ以上でかつ前記基本セル高さの2倍以上である場合には該基本セル高さで該フォーマット定義における行を設定し、該項目間の距離が該丸め高さ以上でかつ該基本セル高さの2倍未満である場合には該項目間の距離で該フォーマット定義における行を設定し、前記y座標についてソートした全項目を処理し、
前記出力するスプレッドシートのフォーマット定義を決定する、ことを特徴とする付記1記載のスプレッドシート生成プログラム。
(付記3)
前記項目に関する情報は、該項目の範囲を示す情報を含み、
前記合成ステップにおいて、前記各項目の合成後の位置情報と、前記項目の範囲を示す情報と、に基づいて、該項目が前記フォーマット定義に基づいたスプレッドシート上の複数のセルにまたがって配置されると判断された場合に、前記セル情報が更に備えるセル結合に関する情報を格納する領域に、該当するセル範囲を結合することを示す情報を記録することを特徴とする付記1または2記載のスプレッドシート生成プログラム。
(付記4)
前記項目に関する情報とは、該項目のデータと、該データのデータ長と、該項目の範囲と、該項目のフォント情報と、該項目の配置情報と、該項目の編集方式と、を含むことを特徴とする付記1乃至付記3いずれか一項に記載のスプレッドシート生成プログラム。
(付記5)
複数の表に対応する印刷データから、該各表に含まれる複数の項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成する、中間データ生成手段と、
前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正する、合成後位置情報生成手段と、
前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定する、フォーマット定義決定手段と、
前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出し、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力する、合成手段と、
前記合成データの各セル情報をそれぞれスプレッドシート形式に変換し、前記スプレッドシートの全セル分のセル情報をスプレッドシート形式のデータにして、スプレッドシートを出力する、スプレッドシート出力手段と、
を備えることを特徴とするスプレッドシート生成装置。
(付記6)
情報処理装置が、
複数の表に対応する印刷データから、該各表に含まれる複数の項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成し、
前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正し、
前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定し、
前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出し、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力し、
前記合成データの各セル情報をそれぞれスプレッドシート形式に変換し、前記スプレッドシートの全セル分のセル情報をスプレッドシート形式のデータとして、スプレッドシートを出力する、
ことを特徴とするスプレッドシート生成方法。
(付記7)
情報処理装置が、
複数の表に対応する印刷データから、該各表に含まれる各項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成し、
前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正し、
前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定し、
前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出し、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力し、該合成データを保持する、
ことを特徴とする印刷データ処理方法。
1 スプレッドシート生成システム
2 中間データ生成装置
3 中間データ合成装置
4 スプレッドシート出力装置
5 印刷データ
6 フォーマット定義情報
7 スプレッドシート
8 業務アプリケーション
9 帳票定義ツール
10 CPU
11 ROM
12 RAM
13 通信インターフェイス
14 入力装置
15 出力装置
16 記憶装置
17 駆動装置
18 バス
19 可搬型記憶媒体
20 ネットワーク
21 プログラム提供者
22 情報処理装置
30 中間データ生成部
31 中間データ管理情報生成部
32 セル定義情報生成部
33 中間データ合成部
34 スプレッドシート出力部
35 フォーマット定義情報と印刷データ
36 中間データ(表)
37 表合成制御情報
38 論理座標情報(合成後)
39 中間データ管理情報
40 セル制御情報
41 セル定義情報
42 セル情報
43 スプレッドシート

Claims (6)

  1. 情報処理装置に、
    複数の表に対応する印刷データから、該各表に含まれる複数の項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成する、中間データ生成ステップと、
    前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正する、合成後位置情報生成ステップと、
    前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定する、フォーマット定義決定ステップと、
    前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出し、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力する、合成ステップと、
    前記合成データの各セル情報をそれぞれスプレッドシート形式のデータに変換し、前記スプレッドシートの全セル分のセル情報をスプレッドシート形式のデータとして、スプレッドシートを出力する、スプレッドシート出力ステップと、
    を実行させることを特徴とするスプレッドシート生成プログラム。
  2. 前記セル制御情報は、基本セル幅、基本セル高さ、丸めセル幅、丸めセル高さを含む情報であって、
    前記フォーマット定義決定ステップは、
    まず、前記各項目の合成後の位置情報におけるx座標について該各項目をソートし、該ソートした項目について順にx座標値の差を求めることで項目間の距離を求め、該項目間の距離が、前記丸めセル幅未満である場合にはフォーマット定義における列を設定せず、該項目間の距離が該丸めセル幅以上でかつ前記基本セル幅の2倍以上である場合には、該基本セル幅で該フォーマット定義における列を設定し、該項目間の距離が該丸め幅以上でかつ該基本セル幅の2倍未満である場合には該項目間の距離で該フォーマット定義における列を設定し、前記x座標についてソートした全項目を処理した後、
    前記各項目の合成後の位置情報におけるy座標について該各項目をソートし、該ソートした項目について順にy座標値の差を求めることで項目間の距離を求め、該項目間の距離が前記丸めセル高さ未満である場合にはフォーマット定義における行を設定せず、該項目間の距離が該丸め高さ以上でかつ前記基本セル高さの2倍以上である場合には該基本セル高さで該フォーマット定義における行を設定し、該項目間の距離が該丸め高さ以上でかつ該基本セル高さの2倍未満である場合には該項目間の距離で該フォーマット定義における行を設定し、前記y座標についてソートした全項目を処理し、
    前記出力するスプレッドシートのフォーマット定義を決定する、ことを特徴とする請求項1記載のスプレッドシート生成プログラム。
  3. 前記項目に関する情報は、該項目の範囲を示す情報を含み、
    前記合成ステップにおいて、前記各項目の合成後の位置情報と、前記項目の範囲を示す情報と、に基づいて、該項目が前記フォーマット定義に基づいたスプレッドシート上の複数のセルにまたがって配置されると判断された場合に、前記セル情報が更に備えるセル結合に関する情報を格納する領域に、該当するセル範囲を結合することを示す情報を記録することを特徴とする請求項1または2記載のスプレッドシート生成プログラム。
  4. 前記項目に関する情報とは、該項目のデータと、該データのデータ長と、該項目の範囲と、該項目のフォント情報と、該項目の配置情報と、該項目の編集方式と、を含むことを特徴とする請求項1乃至請求項3いずれか一項に記載のスプレッドシート生成プログラム。
  5. 複数の表に対応する印刷データから、該各表に含まれる複数の項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成する、中間データ生成手段と、
    前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正する、合成後位置情報生成手段と、
    前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定する、フォーマット定義決定手段と、
    前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出し、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力する、合成手段と、
    前記合成データの各セル情報をそれぞれスプレッドシート形式に変換し、前記スプレッドシートの全セル分のセル情報をスプレッドシート形式のデータにして、スプレッドシートを出力する、スプレッドシート出力手段と、
    を備えることを特徴とするスプレッドシート生成装置。
  6. 情報処理装置が、
    複数の表に対応する印刷データから、該各表に含まれる複数の項目の該表中の位置情報を全項目分含む中間データを、該各表に対応して複数生成し、
    前記複数の中間データについて、該中間データが含む各項目の前記位置情報を、表合成用の制御情報に基づいて、合成後の位置情報にそれぞれ補正し、
    前記中間データが含む前記各項目の合成後の位置情報と、基本となるセルサイズを規定したセル制御情報と、に基づいて前記複数の表を合成して出力するスプレッドシートのフォーマット定義を決定し、
    前記各項目の合成後の位置情報に基づいて、該各項目が、前記フォーマット定義に基づいたスプレッドシート上のどのセルに配置されるかを示すセル位置情報を算出し、該セル位置情報に対応するセルに配置される項目に関する情報を格納したセル情報を生成し、該スプレッドシートの全セル分の該セル情報を合成データとして出力し、
    前記合成データの各セル情報をそれぞれスプレッドシート形式に変換し、前記スプレッドシートの全セル分のセル情報をスプレッドシート形式のデータとして、スプレッドシートを出力する、
    ことを特徴とするスプレッドシート生成方法。
JP2010066911A 2010-03-23 2010-03-23 スプレッドシート生成プログラム、スプレッドシート生成装置、スプレッドシート生成方法 Expired - Fee Related JP5672732B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010066911A JP5672732B2 (ja) 2010-03-23 2010-03-23 スプレッドシート生成プログラム、スプレッドシート生成装置、スプレッドシート生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010066911A JP5672732B2 (ja) 2010-03-23 2010-03-23 スプレッドシート生成プログラム、スプレッドシート生成装置、スプレッドシート生成方法

Publications (2)

Publication Number Publication Date
JP2011198296A true JP2011198296A (ja) 2011-10-06
JP5672732B2 JP5672732B2 (ja) 2015-02-18

Family

ID=44876345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010066911A Expired - Fee Related JP5672732B2 (ja) 2010-03-23 2010-03-23 スプレッドシート生成プログラム、スプレッドシート生成装置、スプレッドシート生成方法

Country Status (1)

Country Link
JP (1) JP5672732B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012194804A (ja) * 2011-03-16 2012-10-11 Konica Minolta Business Technologies Inc スプレッドシートデータ生成装置およびプログラム
JP2018165000A (ja) * 2017-03-28 2018-10-25 コニカミノルタ株式会社 出力制御プログラム及び出力制御方法
CN111858513A (zh) * 2020-07-22 2020-10-30 深圳市昇利扬科技有限公司 一种数字墨水笔迹的数据存储格式

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147127A (ja) * 1994-11-25 1996-06-07 Matsushita Electric Works Ltd スプレッドシート表示方法およびその装置
JP2007087238A (ja) * 2005-09-26 2007-04-05 Fujitsu Ltd データ変換プログラム、方法及び装置
JP2007328514A (ja) * 2006-06-07 2007-12-20 Canon Software Inc 文書管理装置及びそのセル仕様調整方法、並びにプログラム
WO2009001462A1 (ja) * 2007-06-28 2008-12-31 Fujitsu Limited スプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147127A (ja) * 1994-11-25 1996-06-07 Matsushita Electric Works Ltd スプレッドシート表示方法およびその装置
JP2007087238A (ja) * 2005-09-26 2007-04-05 Fujitsu Ltd データ変換プログラム、方法及び装置
JP2007328514A (ja) * 2006-06-07 2007-12-20 Canon Software Inc 文書管理装置及びそのセル仕様調整方法、並びにプログラム
WO2009001462A1 (ja) * 2007-06-28 2008-12-31 Fujitsu Limited スプレッドシート生成プログラム、該プログラムを記録した記録媒体、スプレッドシート生成装置、およびスプレッドシート生成方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012194804A (ja) * 2011-03-16 2012-10-11 Konica Minolta Business Technologies Inc スプレッドシートデータ生成装置およびプログラム
JP2018165000A (ja) * 2017-03-28 2018-10-25 コニカミノルタ株式会社 出力制御プログラム及び出力制御方法
CN111858513A (zh) * 2020-07-22 2020-10-30 深圳市昇利扬科技有限公司 一种数字墨水笔迹的数据存储格式

Also Published As

Publication number Publication date
JP5672732B2 (ja) 2015-02-18

Similar Documents

Publication Publication Date Title
JP5465819B2 (ja) テキストグリッド作成ツール
CN1607524B (zh) 校对多个可变数据文档的方法及计算机装置
CN102609967B (zh) 一种图文报告的生成及排版的方法
CN102779118B (zh) 一种论文的排版方法及系统
JP4988842B2 (ja) 表データ生成プログラム、表データ生成方法および表データ生成装置
JP5672732B2 (ja) スプレッドシート生成プログラム、スプレッドシート生成装置、スプレッドシート生成方法
JP4992350B2 (ja) 文書編集装置およびプログラム
JP4612669B2 (ja) 漫画作成支援装置、およびプログラム
JP2006309706A (ja) 印刷データ編集装置、印刷データ編集プログラム及び印刷データ編集プログラムを記録した記録媒体
CN107145533A (zh) 一种报表生成方法及装置
JP2008140158A (ja) 文書編集装置およびプログラム
JP2008141496A (ja) 文書編集装置およびプログラム
WO2014181563A1 (ja) 文書処理装置および文書処理用プログラム
JP6131962B2 (ja) 表合成装置、および表合成プログラム
JP2006331356A (ja) 業務処理プログラム、それを記録した記録媒体及び業務処理システム
JP4759874B2 (ja) 表組みパターン作成装置
JP2010267020A (ja) 帳票出力システム及び帳票出力方法
JP5753018B2 (ja) Pdf作成システム
JP2011210128A (ja) 組版装置、小組作成方法及び小組作成プログラム
JP2011003092A (ja) 面付装置、面付テンプレート決定プログラム及び面付テンプレート決定方法
JP2003131847A (ja) 描画データ変換プログラム
JP4111948B2 (ja) 漫画作成支援装置、およびプログラム
JPH05189424A (ja) 文書編集装置及び文書編集方法
JP2010231527A (ja) 帳票作成装置、帳票作成方法及び帳票作成プログラム
JP2014134955A (ja) 補足説明付文書表示装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140402

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141215

R150 Certificate of patent or registration of utility model

Ref document number: 5672732

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees