(57)【要約】【課題】明示的にテーブルの列幅を指定していない状態であっても自動的に列幅をテーブルの縦幅がほぼ最小となるようにすることができるテーブル表示時における最適化された列幅自動調整方法を提供することを目的とする。【解決手段】テーブルの各列ごとのデータのデータ長の和を求め、テーブル全体のデータのデータ長を求め、該テーブル全体のデータ長に対する各列のデータ長の割合を求めて、全体横幅に対する各列幅の割合の初期値とする。所定行内の各列のセルのうち、最大列幅のセルの改行数と改行数が最大の列の当該改行数とを比較し、最大列幅のセルの改行数より改行数が最大の列の当該改行数の方が大きい場合は、前記最大列幅の列の列幅を所定量減らし前記改行数が最大の列の列幅を前記減らした所定量増やすことにより列幅を調整する処理を、前記最大列幅のセルの改行数が前記改行数が最大の列の当該改行数以上になるまで繰り返す。【選択図】  図９
2007115024.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用いてテーブルを表示または印刷する際に該テーブルの各列幅を自動調整するテーブルの列幅自動調整方法であって、
コンピュータが備えるデータ長解析手段が、テーブルの各列ごとのデータのデータ長の和を求めるステップと、
コンピュータが備える列幅仮定手段が、前記各列のデータ長の和をさらに合計してテーブル全体のデータのデータ長を求めるとともに、該テーブル全体のデータ長に対する各列のデータ長の割合を求め、該各列のデータ長の割合を、テーブル全体の横幅に対する各列幅の割合の初期値として設定するステップと、
コンピュータが備える最終列幅確定手段が、所定行内の各列のセルのうち、最大列幅のセルの改行数と改行数が最大の列の当該改行数とを比較し、前記最大列幅のセルの改行数より前記改行数が最大の列の当該改行数の方が大きい場合は、前記最大列幅の列の列幅を所定量減らし前記改行数が最大の列の列幅を前記減らした所定量増やすことにより列幅を調整する処理を、前記最大列幅のセルの改行数が前記改行数が最大の列の当該改行数以上になるまで繰り返すステップと
を備えることを特徴とするテーブルの列幅自動調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Webブラウザでテーブル（表）を表示するときなどに、自動的にテーブルの縦幅を調整することにより、所定の横幅内にテーブルを収め、かつ、テーブルの構造自体を見やすい形に調整する列幅自動調整方法に関するものである。
【背景技術】
【０００２】
インターネットの普及に伴い、Webページの閲覧はごく当たり前のものとなってきている。中でも集計データなどを見やすく表示させるためにテーブル構造がよく使用されている。
【０００３】
通常、Web上においてテーブル構造を表示させるためには、例えば図４に示すようにHTML（HyperText Markup Language）言語のtableタグを用いる。図４のHTMLを基にしてブラウザ（Webページを閲覧する際に利用されるソフトウェアの総称）上に表示されるテーブル構造の具体例が図２である。図４中の41〜44に示すtdタグで囲まれた文字列が、図２中の21〜24に示す１マスにそれぞれ対応し、さらにそれらをtrタグで囲み１行の区切りとし、テーブル構造が形成される。
【０００４】
このようにしてテーブル構造を表示させる際、表示領域がブラウザ等の画面幅に収まらない場合がある。この不便さを解消するため、幾つかの技術が提案されている。例えば、特許文献１には、閲覧画面からはみ出す画像や表に関して、画像の縮小や縦横方向の入れ換えなどによりファクシミリ端末の解像度内に納まるようにするファクシミリ端末出力用の画像変換技術が開示されている。特許文献２には、ホームページ上の入力フィールドが画面の幅を超えないように調整することにより、横スクロールを必要としないブラウザを提供する技術が開示されている。特許文献３には、画像の表示サイズが表示画面のサイズを超えたとき、その画像を代替の画像に置換して表示し、その画像が選択されたときサーバからダウンロードして表示する技術が開示されている。特許文献４には、ポータル画面を表示する際に、各ポートレット表示領域が画面内に入るように表示内容を調節して表示する技術が開示されている。
【特許文献１】特開平１１−１５７４９号公報
【特許文献２】特開２００２−６３０１６号公報
【特許文献３】特開２００２−９１８４９号公報
【特許文献４】特開２００４−２５２６８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上記の特許文献１〜４に記載の技術は、何れも、画面がスクロールしないように調整したり、決まった横幅内にテーブルが収まるように調整するというものであり、テーブルの構造自体を見やすい形に補正するという類のものではない。例えば、これらの従来技術を用いてテーブルに何も列幅を指定せずに表示させた場合、データ量に関わらず均等な幅に調整され、テーブル全体の縦幅が非常に長くなってしまい、視覚的にテーブル全体を捉えにくいという問題がある。列幅を手動で調整することによりこの問題は解決できるが、それを行うためにはどうしても手間がかかる。
【０００６】
本発明の目的は、明示的にテーブルの列幅を指定していない状態であっても自動的に列幅をテーブルの縦幅がほぼ最小となるようにすることができるテーブル表示時における最適化された列幅自動調整方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は、コンピュータを用いてテーブルを表示または印刷する際に該テーブルの各列幅を自動調整するテーブルの列幅自動調整方法であって、コンピュータが備えるデータ長解析手段が、テーブルの各列ごとのデータのデータ長の和を求めるステップと、コンピュータが備える列幅仮定手段が、前記各列のデータ長の和をさらに合計してテーブル全体のデータのデータ長を求めるとともに、該テーブル全体のデータ長に対する各列のデータ長の割合を求め、該各列のデータ長の割合を、テーブル全体の横幅に対する各列幅の割合の初期値として設定するステップと、コンピュータが備える最終列幅確定手段が、所定行内の各列のセルのうち、最大列幅のセルの改行数と改行数が最大の列の当該改行数とを比較し、前記最大列幅のセルの改行数より前記改行数が最大の列の当該改行数の方が大きい場合は、前記最大列幅の列の列幅を所定量減らし前記改行数が最大の列の列幅を前記減らした所定量増やすことにより列幅を調整する処理を、前記最大列幅のセルの改行数が前記改行数が最大の列の当該改行数以上になるまで繰り返すステップとを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、最大列幅のセルの改行数と改行数が最大の列の当該改行数とを比較し、最大列幅のセルの改行数より改行数が最大の列の当該改行数の方が大きい場合は、それらの列の間で列幅を調整するので、明示的にテーブルの列幅を指定していない状態であっても自動的に列幅をテーブル全体の縦幅をより小さく、ほぼ最小となるようにすることができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明を適用したテーブル表示時における最適化された列幅自動調整方法の一実施の形態について説明する。
【００１０】
図１は、本発明の実施の形態に係る列幅自動調整方法の適用対象であるシステムのハードウェア構成図である。11はデータを入力するキーボード及びマウス等の入力部を表す。12はデータを処理する中央処理装置及び主記憶装置等をまとめたデータ処理部を表す。13はハードディスク等の外部記憶装置を表す。14はディスプレイ等の表示部を表す。データ処理部12では、Webブラウザが動作しており、不図示のネットワーク経由でイントラネットやインターネット上のWebページを閲覧できる。このような構成は、汎用のコンピュータにWebブラウザなどのソフトウェアをインストールすることで実現できる。特に、本発明に係るテーブル表示の列幅自動調整方法を実現するためのプログラムは、例えばプラグインソフトの形でWebブラウザに組み込まれて動作するものである。
【００１１】
図２は、本実施形態による列幅自動調整を施す前のテーブルの表示例を示す。データ量が最も多い列22に対して列幅が適切に割り当てられていないため、表全体の縦幅が間延びしている。このサンプルの状態では全体を一目で見渡せるためまだ見難いことはないが、これが何ページにも渡っていると非常に見難いテーブルになってしまう。
【００１２】
図３は、本実施形態による列幅自動調整を施した後のテーブルの表示例である。一番データ量の多い列32に対して最大の列幅を割り当ててあり、他の列に関してもデータ量に応じて各列幅が最適化されているため、表全体の縦幅が縮小され、データ的に見やすい状態になっていることが分かる。
【００１３】
図４は、図２のテーブルのHTML表現である。図２のテーブルにおけるデータ21が、図４における表現41に対応する。同様に、図２の22が図４の42、図２の23が図４の43、図２の24が図４の44に、それぞれ対応する。表現41から44までをtrタグで囲む。trタグの一まとまりが、テーブルの１行に対応する。以降の行も同様に定義される。
【００１４】
図５は、図３のテーブルのHTML表現である。図３におけるデータ31が、図５における表現51に対応する。同様に、図３の32が図５の52、図３の33が図５の53、図３の34が図５の54に、それぞれ対応する。図４との違いは、表現51〜54のそれぞれのtdタグ内において列幅の指定を行っている点である。列51では20%、列52では50%、列53では15%、列54では15%と、それぞれ百分率で指定し、テーブル全体の横幅の何%を割り当てるか指定している。
【００１５】
本実施形態の図１のシステムでブラウザ上に所定のWebページを表示する際、そのWebページ中にテーブル構造が含まれている場合には、データ処理部12により、以下の図６のデータ長解析ステップ、図７の列幅の仮定ステップ、及び図８の最終列幅確定ステップを順に実行し、列幅の自動調整を行う。これにより、例えば図２及び図４のようなテーブルが図３及び図５のように自動調整される。
【００１６】
図６は、データ長解析ステップを示すフローチャートである。最初に、テーブルデータをn×mの配列に格納する（ステップ62）。以降では、テーブルの行数の最大値をnとし、行数に対するループのカウンタとしてiを用いる。同様に、テーブルの列数の最大値をmとし、列数に対するループのカウンタとしてjを用いる。例えば、図２及び図４のテーブルであれば、n=5,m=4である。iは0,1,…,n-1をとり、j=0,1,…,m-1をとる。
【００１７】
次に、テーブルの行数分ループさせるために行数カウンタiに0をセットする（ステップ63）。iの値がnより小さい間は以降の処理を繰り返す（ステップ64）。最初はテーブルの１行目（iの値は0）に対して各列に対する処理を行う。
【００１８】
次に、テーブルの列数分ループさせるために列数カウンタjに0をセットする（ステップ65）。jの値がmより小さい間は以降の処理を繰り返す（ステップ66）。配列a[j]は、列jにおけるデータ長の総和を格納するための領域である。各列に対してデータ長（行iかつ列jのセル（テーブルの１つのマス目に相当する）に表示するデータのデータ長）をバイト単位でこの配列に加えていくものとする（ステップ67）。また、配列a[j]には、図６の処理の開始時点で初期値として0が格納されているものとする。カウンタjの値を１増やし、j<mの条件を満たす限りステップ67及びステップ68の処理を繰り返す。
【００１９】
j<mの条件が満たされなくなったときjのループを抜け、次の行の処理を行うためiの値を１増やし（ステップ69）、ステップ64の判定前まで戻る。
【００２０】
以上の処理により、テーブル全体に対する各列のデータ長の総和を取得する。以上の処理が終了したとき、配列a[j]には各列jのデータ長の総和が設定されていることになる。図６の処理の後、図７の処理を行う。
【００２１】
図７は、列幅の仮定ステップを示すフローチャートである。ここでの目的は、図６のデータ長解析ステップで作成した配列aを用いてさらに各列のデータ長を合計し、各列に対しテーブル全体の横幅の何％を割り当てればよいか仮定する最初の指標を作成することにある。
【００２２】
まず、テーブルの列数分ループさせるために列数カウンタjに0を、テーブル内の全データ長を合計するための変数totalに0を、それぞれセットする（ステップ72）。jの値がmより小さい間は以降の処理を繰り返す（ステップ73）。列毎の合計値をさらに全列に対して合計することにより、テーブル全体のデータ長の合計値を求める（ステップ74）。カウンタjの値を１増やし（ステップ75）、j<mの条件を満たす限りステップ74及びステップ75の処理を繰り返す。
【００２３】
j<mの条件が満たされなくなったときjのループを抜け（ステップ73）、再度テーブルの列数分ループさせるために列数カウンタjに0をセットする（ステップ76）。jの値がmより小さい間は以降の処理を繰り返す（ステップ77）。列毎にテーブル全体の幅の何％を割り当てるかを配列bに格納する（ステップ78）。計算式は、「（各列のデータ長の総和a[j]／テーブルの全データ長total）×100（小数点第一位を四捨五入）」で求める。カウンタjの値を１増やし（ステップ79）、j<mの条件を満たす限りステップ78及びステップ79の処理を繰り返す。
【００２４】
以上の処理により、テーブル全体に対する列毎の最初の割り当て値を取得する。すなわち、ここまでの処理で、配列b[j]には、テーブル全体の幅を100%としたときの各列jの列幅の割合（%値）が設定されたことになる。図７の処理の後、図８の処理を行う。
【００２５】
図８は、最終列幅確定ステップを示すフローチャートである。まず、システム側（具体的にはブラウザ等）からテーブル全体の横幅の値を取得しT_WIDに設定する（ステップ82）。この横幅値は、予め決められた所定の単位で表現されているものとする。例えば、ミリメートルやインチなどで表現した値、表示画面上のドット数、あるいは予め決められたフォントにより数えた文字数などである。
【００２６】
次に、テーブルの行数分ループさせるために行数カウンタiに0をセットする（ステップ83）。iの値がnより小さい間は以降の処理を繰り返す（ステップ84）。ここで、現在処理中の行iにおいて最適化が完了したことを判定するためのフラグflgにtrueをセットする（ステップ85）。flgがtrueの間は、最適化処理を続行し続ける（ステップ86）。
【００２７】
次に、行iの各列における列幅の具体値を特定する（ステップ87）。配列b[j]に取得した値は割合であるため、ステップ82で取得したテーブル全体の横幅(T_WID)と配列b[j]の値を用いて具体的な各列の列幅の値を特定し、配列c[j]に格納するものとする。この処理はカウンタjを用いたループ処理でテーブルの各列に対して行うものとし、その際、列幅が最大となる列を示すカウンタ値jをmax_l_jに保持しておく。
【００２８】
次に、行iの各列における改行数を特定する（ステップ88）。この処理は、ステップ87で作成した各列の列幅の具体値を持つ配列c[j]と各列のデータ（行i列jのセルに表示するデータ）から、当該行i列jのセルで何行に渡って改行が起きているかを計算し、配列d[j]に格納するものである。この処理では、表示フォントの大きさや書式を考慮して実際に表示したときに何行に渡るかを求めるものとする。またこの処理はカウンタjを用いたループ処理で各列に対して行うものとし、その際、改行数が最大となる列を示すカウンタ値jをmax_c_jに保持しておく。
【００２９】
次に、改行数が一番大きい列（max_c_jの列）の当該改行数が最大列幅の列（max_l_jの列）の改行数より大きいかどうかの判定を行う（ステップ89）。ここで、ステップ89の判定結果が偽になった場合は、flgにfalseをセットし（ステップ8c）、ステップ86の判定を経て、ステップ8dでiの値を１増加させ、テーブルの次の行の処理に移る。ステップ89の判定結果が真になった場合は、列幅が最適化されていない状態であると判断し、最大列幅の列の列幅b[max_l_j]の値から１マイナスし（ステップ8a）、最大改行数の列の列幅b[max_c_j]の値に１プラスする（ステップ8b）。その後、ステップ86の処理に戻り、再度列幅の最適化が行われているかどうかの判定処理を行い、flgがfalseになるまで処理を繰り返す。ステップ89,8a,8bは、要するに、改行数が一番大きいセルにおける当該改行数と最大列幅のセルの改行数とを比較し、前者の方が大きい場合に、後者の列幅を１％減らし前者の列幅を１％増やして列幅を調整する処理である。なお、ここでは１％ずつ増減させているが、増減させる量は任意である。
【００３０】
以上の処理を全行に渡って施すことにより、テーブルの縦幅がほぼ最小となるように小さくでき、且つ各列幅のデータ量に応じて横幅が調整された最適化されたテーブルが完成する。最終的に、配列b[j]に各列jの百分率表現での列幅の割合が設定されているので、これを元に図５の51〜54に示すような各列の列幅指定を行えばよい。
【００３１】
図９は、本発明の一実施の形態例を施す前後、すなわち図２と図３をまとめた説明図である。これは本発明の適用イメージを分かりやすく示したものである。
【００３２】
なお、上記実施形態ではブラウザでテーブルを表示する場合の適用例を説明したが、これに限らず、本発明はテーブルを表示あるいは印刷する各種のケースで適用可能である。
【図面の簡単な説明】
【００３３】
【図１】本発明の一実施の形態例を施すハードウェア構成図である。
【図２】本発明の一実施の形態例を施す前のテーブル表示例を示す図である。
【図３】本発明の一実施の形態例を施した後のテーブル表示例を示す図である。
【図４】図２のＨＴＭＬ表現である。
【図５】図３のＨＴＭＬ表現である。
【図６】データ長解析ステップを示すフローチャートである。
【図７】列幅の仮定ステップを示すフローチャートである。
【図８】最終列幅確定ステップを示すフローチャートである。
【図９】本発明の一実施の形態例を施す前後をまとめた説明図である。
【符号の説明】
【００３４】
11…入力部、12…データ処理部、13…外部記憶装置、14…表示部。
【図１】
2007115024.tif 000003
【図２】
2007115024.tif 000004
【図３】
2007115024.tif 000005
【図４】
2007115024.tif 000006
【図５】
2007115024.tif 000007
【図６】
2007115024.tif 000008
【図７】
2007115024.tif 000009
【図８】
2007115024.tif 000010
【図９】
2007115024.tif 000011