2023-06-07 09:48:42
Excelの横一列の配列の先頭を項目名にしつつhtml化したい
いつも勉強させて頂いてます。 現在、作ろうと思っているものがあるのですが、初心者の私には配列の使い方がよくわからず…ご助力いただけると幸いです。 対象はExcelデータの処理で、横一列に多数の項目が記載されていて、空の行もあちこちにある、といったものです。 これを縦に並べた1つのhtmlに変換したいのです。 例えば、以下のようなExcelがあるとして、 社員名 18日 19日 20日 21日 補足 山田太郎 ○ ○ 21日は不可 山田次郎 ○ ○ これを、 社員名 山田太郎 18日 ○ 19日 20日 ○ 21日 補足 21日は不可 といった縦組みのhtmlに変換したいのです。 また、項目名がExcelシートごとで全部違っていて、固定名称にできないので、何とか最初の行をタイトルとしつつ取り込みできないか、と考えています。そして、項目の中に文章があり、半角カンマを使うことも多いので、TSVでの処理を考えています。TSVはExcelから書き出します。 今は最初の行の取り込みをとりあえず無視して、以下のようなものを作っています。とりあえず動作はしますが、やはり項目名があった方が使いやすいので、可能であれば修正したいのです。(現在は○のところを18日、などに手動でExcel検索置換して取り込んでいます) Excel上で縦横入れ替えで解決したいところですが、長い文章がところどころ存在するのがネックとなっています。また、文章内にエンティティ文字が存在しているため、html化しないと見えない記号などがあります。 よろしくお願いします。 ↓タグ部分は消えてしまうようなので、全角<>に変換しています -------------- //HTMLをデスクトップ出力設定 「{デスクトップ}★HTML化.html」に出力先設定。 //CSSの { が消えてしまうのでまず一段階目として二重かっこでCSS出力 『<HTML><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <head> <style type="text/css">//CSSは省略します </style> </head> <BODY>』を出力。 「{デスクトップ}」に作業フォルダ変更。 「*.txt」のファイル選択。 //TSVを対象としますが、実用上txtにしています それを毎行読んで反復。 本文はそれ。 本文の「{タブ}」を「<p>」に置換。 本文はそれ。 「{本文}<hr>{改行}」を出力。//各項目ごとに区切り線を入れます //ループ抜けたあとの終了処理。 「</BODY></HTML>」を出力。 「終了しました」と言って終了する。 |