2019年1月23日水曜日

VB フラットテキストから HTML Table を

さて、前回 書いた様に、フラットテキストを HTML の テーブル記述 に変換するものです。
VB.net を使って書きましたが、
内容的には、一般的な HTML 用では無く、Blogger の投稿用に表を組み込む為のツールになります。
ですから、考え方のみ、以下に纏めます。


作文して行く上で、メモ帳 notepad.exe を使い、タブ文字(以下 Tab) で簡易表的に草稿を書いている、 と、
前回 に ご説明しました。
これをそのまま投稿にすると、半角文字によって、簡易表の位置ずれが起こります。
それを避ける為の HTML Table なのですが、
行や列が増えて来ると、その作業は、... 、地獄です。
この地獄から抜け出し、ぱぱっ!、とHTML のコードに変換したい! が事の始まりです。

表形式ソフトのデータから HTML へ、は検索すると事例が見付かりますが、
単なる文字列の集合の フラットテキスト からは、難儀です。

Tab や Space の混在したデータから 列の冒頭を判断し、
時には、空データで、後半が省略されたものを処理しなければいけません。
冒頭行の見出しですら、項目間に Space が来るし、空白は Space や Tab が複数混ざります。

詰まる所、
項目の半角文字数を指定してあげれば、それに基いて、行を分割して行くのですが ... 。

こんな簡易表形式を見た事がありませんか?。  半角混じりの為、位置ずれあり。 後述の図を参照。.

項目1   項目2
---------- ----------------------
内容    説明

そうです。
この形にすれば、判別が可能ですね。
項目間は ひとつの Space で隔たっている あれ です。
各見出しは ----- でガイドされます。

何も、最初から、----- を書き込む必要は無く、
プログラムに Copy&Paste で渡した後に、新行を挿入してやれば良いですね。

草稿時に Tab Space 交じりであったものは、
Space に統一しましょう。
草稿時の見た目を再現する為と、後々の文字列後半のトリム Trim() の為、です。
メモ帳 notepad.exe の Tab 標準は 最大8文字 ですが、
他のエディタ類からの投入も考慮し、可変 にして置きます。

さて、準備は整いました。
後は、コードを書いて行くだけ。

 Tab を 所定の Space に置換し、
 ----- から 各列の文字数を取得し、
 それから、各項目名を取得し、
 同様に、各データを吸い上げる

こうした流れになります。

VB.net 的には、文字列変換 の山です。
string.Replace と string.Substring の活躍ですね。
そう、TextBox から、1行を抜き出す TextBox.Lines(n) も大忙しです。

データは各行後半に空データで短いものもあるので、
其処は注意しないとエラーで止まってしまいます。


差し当たり、 動くものになりましたので、 その画面を。  Form1.vb 約 360 行。.



いやぁ、書くのは大変ですが、
一旦、出来て仕舞えば、 入力やボタンを幾つか押すだけで、簡単に HTML コードが出て来ますので、
楽ちん! です。

手入力では、ミス連発になるであろうデータボリュームでも、
出て来たものを Blog の投稿に流し込み、プレビュー画面で確認が取れるので、
チェック作業も捗りますね。

これで、少しは、我が投稿も見易くなるのでしょうか?。  :o



追記:
 このプログラムを使って自動生成した HTML Table は以下に載せてあります。
 尤も、 Blogger に CSS 設定してありますので、 それとの混合の結果 になりますが。
 興味がおありでしたら、覗いて見て下さい。
       GIMP Layer Mode Enum Names



0 件のコメント:

コメントを投稿