日本語プログラミング言語なでしこの公式掲示板

なでしこ の 掲示板

トップ 新規 検索

2023-06-07 17:27:56

Re①:Excelの横一列の配列の先頭を項目名にしつつhtml化したい

雪乃☆雫 さん

 TSVのデータは「TSV取得」で二次元配列に変換出来ます。
 配列、特に二次元配列は、理解して使えるようになるまでは、ホントなんだかよく分かんなくてむじゅい~ってなりますよねー;
 でも、とにかく、エクセルみたいな表形式のデータに番号が振られていて、行ごと、列ごと、各項目ごと、好きに参照したり取得したり出来るという、超便利なアレなので、ぜひ頑張って覚えることをオススメしますです。
 というわけで、TSVファイルを一行ずつ取得して処理するのではなく、まるっと取得し二次元配列のデータとしてから処理するのが良いのではないかと思います。

 こんなかんじ?
#--------------------------------------------------
//HTMLをデスクトップ出力設定
「{デスクトップ}★HTML化.html」に出力先設定。

//CSSの { が消えてしまうのでまず一段階目として二重かっこでCSS出力
『<HTML><meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<head>
<style type="text/css">
</style>
</head>
<BODY>』を出力。

「{デスクトップ}」に作業フォルダ変更。
「*.txt」のファイル選択。

# 「TSV取得」でTSVのデータを表(二次元配列)として扱うことが出来るようになります。
それを開いてTSV取得し、本文配列に代入。

# 最初の行を「配列切り取り」で取得し、タイトルとして別配列に保持します。
本文配列の0を配列切り取り、タイトルに代入。

# 配列を反復すると、表の行が順に配列として取得されます。
本文配列を反復。
 本文はそれ。# 一人分の本文が配列として取得されています。
 # 繰り返しで、タイトルと本文の項目を合体させていきます。
 タイトルの要素数回
  「{タイトル[回数-1]} {本文[回数-1]}<p>{改行}」を出力。
 # 各項目ごとに区切り線を入れます。
 「<hr>{改行}」を出力。

//ループ抜けたあとの終了処理。
「</BODY></HTML>」を出力。
「終了しました」と言って終了する。
#--------------------------------------------------
 まず問題のタイトルですが、「配列切り取り」という命令があるので、それで最初の行をで取得します。
 配列では、最初の行は「0」です。
 「配列切り取り」をすると、切り取られた内容が配列として返され、元の配列からは削除されます。

「社員名,18日,19日,20日,21日,補足」
 というタイトルの配列と、
「山田太郎,○,,○,,21日は不可
山田次郎,○,,,○,」
 という本文の二次元配列に分かれるとゆうことです。

 この本文の配列を「反復」すると、「山田太郎,○,,○,,21日は不可」「山田次郎,○,,,○,」と、一行ずつが取得されていきます。
 あとは、コレとタイトルの各項目を合体させていくだけですね☆

 それで、タイトルの「要素数」で繰り返しを行います。
 要素数というのは文字通りその配列にいくつ要素が入ってますか? ってなことなので、今回なら6回繰り返されることになるんですが、項目名がExcelシートごとで全部違ってるとゆうコトなので、実際に取得されたタイトルの要素数で繰り返しを行うようにするわけです。
 繰り返しでカウントされる「回数」は1スタートなのですが、配列は先に述べたように0スタートなので、「回数-1」で項目を取得していきます。
 あ、いちいち{改行}を入れてるのはHTMLを人間が見やすくするためなので、無しでも良きです~。



(編集パスワード送信)

子記事

親記事 (No.1659)
返信した記事(元) (No.1659)

この内容(No.1660)に返信

この内容(No.1660)をダウンロード

この内容(No.1660)のテキスト表示





www.eznavi.net