VB.NETでテキストファイルからHTMLファイルを動的に生成したいのですがどのようにやればできるかヒントをいただけないでしょうか?
とあるフォルダに下記のようなファイルがあるとします。
20100101AAA.txt
20091008AAA.txt
20100202AAA.txt
20070707AAA.txt
20100412AAA.txt
また、ファイルの中身は
<div id = 'AAA'>それぞれのファイルの内容</div>
<div id = 'BBB'>それぞれのファイルの内容</div>
です。
まず、ファイル名から日付を解析して新しい順番に並べるアルゴリズムを考えたいのですがどのようにしたらいいか困っています。
また、並び変えたファイルを動的に合成して一つのHTMLを作りたいのですがどのようにしたらいいのでしょうか?
詳しい方よろしくお願いします。
No.4ベストアンサー
- 回答日時:
後半
Private Sub OutPutHtmlExec(ByVal p_strHtm As String, ByVal p_htmHtml As HtmlGenericControl, ByVal p_enc As Encoding)
Dim l_strRet As String = ""
Using l_fsOut As New System.IO.FileStream(p_strHtm, FileMode.Create)
Using l_hwHtm As New System.Web.UI.HtmlTextWriter(New System.IO.StreamWriter(l_fsOut, p_enc))
p_htmHtml.RenderControl(l_hwHtm)
l_hwHtm.Flush()
End Using
End Using
End Sub
Private Function ReadTextSJIS(ByVal p_fInf As FileInfo) As String
Return System.IO.File.ReadAllText(p_fInf.FullName, Encoding.GetEncoding("shift_jis"))
End Function
Private Function FindText(ByVal p_strPath As String, ByVal p_strPtn As String) As DataTable
Dim l_dtbRet As DataTable = FindTextSchema()
Dim l_dInf As New DirectoryInfo(p_strPath)
For Each l_fInf As FileInfo In l_dInf.GetFiles(p_strPtn)
Dim l_drwWk As DataRow = l_dtbRet.NewRow()
l_drwWk("path") = l_fInf.FullName
l_drwWk("date") = DateTime.ParseExact(l_fInf.Name.Substring(0, 8), "yyyyMMdd", Nothing)
l_dtbRet.Rows.Add(l_drwWk)
Next
Return l_dtbRet
End Function
Private Function FindTextSchema() As DataTable
Dim l_dtbRet As New DataTable
l_dtbRet.Columns.Add(New DataColumn("path", GetType(String)))
l_dtbRet.Columns.Add(New DataColumn("date", GetType(Date)))
Return l_dtbRet
End Function
End Class
No.5
- 回答日時:
通るしがるです。
=VALUE(xx)で、エラーになるということは、おそらすxxに示した値が
数字として変換できない値を含んでいることが考えられます。
たとえば、”4△4"とか、そのような値(例では△(空白)を取り除いて
再度、value関数で数値変換してみてください。
No.3
- 回答日時:
前半
Imports System.IO
Imports System.IO.Path
Imports System.Text
Imports System.Web.UI.HtmlControls '←要参照設定[System.Web]
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'出力対象情報を取得([探す場所],[検索パターン])
Dim l_dtbData As DataTable = FindText("C:\testdata", "*AAA.txt")
'HTML出力([出力ファイル名],[出力対象情報])
Call OutPutHtml("C:\test.html", l_dtbData)
End Sub
Private Sub OutPutHtml(ByVal p_strHtm As String, ByVal p_dtbData As DataTable)
'エンコード
Dim l_enc As Encoding = Encoding.UTF8
Using l_htmHtml As New HtmlGenericControl("html")
'ヘッダ
Using l_htmHead As New HtmlGenericControl("Head")
l_htmHtml.Controls.Add(l_htmHead)
'エンコード情報の追加
Using l_htmMetaEnc As New HtmlMeta
l_htmHead.Controls.Add(l_htmMetaEnc)
With l_htmMetaEnc
.HttpEquiv = "Content-Type"
.Content = "text/html"
.Attributes("charset") = l_enc.WebName
End With
End Using
'タイトル追加
Using l_htmTitle As New HtmlTitle
l_htmHead.Controls.Add(l_htmTitle)
l_htmTitle.Text = "あうとぷっと"
End Using
End Using
'ぼでー
Using l_htmBody As New HtmlGenericControl("body")
l_htmHtml.Controls.Add(l_htmBody)
'日付順にソート取得
For Each l_drwWk As DataRow In p_dtbData.Select(Nothing, "date")
Dim l_fInf As New FileInfo(l_drwWk("path").ToString())
'DIV作成
Using l_htmDiv As New HtmlGenericControl("div")
l_htmBody.Controls.Add(l_htmDiv)
With l_htmDiv
.ID = "div" & l_fInf.Name
'そのままテキストを出力
.InnerText = ReadTextSJIS(l_fInf)
'改行を置き換える
.InnerHtml = .InnerHtml.Replace(vbCrLf, "<br />")
End With
End Using
Next
End Using
'HTML出力実行
Call OutPutHtmlExec(p_strHtm, l_htmHtml, l_enc)
End Using
End Sub
No.2
- 回答日時:
はじめまして、通るがると申します。
さて、ご質問の件なのですが、まずファイル名から日付を解析とありますが
日付がユニークであるならば、日付のみ抽出するのでなくファイル名そのものをソートすれば
よいことになりますので、ArrayクラスのSortメソッドでいけると思います。
もし、ソートをオリジナルのソートロジックで実施しなければならないのであれば、
ソート方法として色々と考えかたがありますのでそちらを参照してください。
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/al …
ファイル名の取得、htmlの作成(合成)についてなのですが、別にhtmlだからといって
特別な操作をするわけではありません。txtもhtml,csvとかもvbからみれば
ただのテキストファイルです。
複数のファイルから一つのファイルに結合したいのであれば、全ファイルをメモリに読み込み
メモリ上でデータを統合し、拡張子を”.html”として出力すればよいことになります。
もしくは、ファイル出力にもappendモード(追加)もありますのでそちらを使用しても
よいことになります。(特にソースの中身を操作する必要がないのであれば)
ご質問のことを実現するためには、まずファイル操作についてどのようなことができるのかは
全て頭に叩き込んでから検討すると、どのようにすればよいのかが見えてくると思いますの
で頑張ってください。ファイル操作については、(VB.NET ファイル操作)で検索すると
沢山検索できるかと思います。それらを読み理解しそれでも解らなければ、その項目一つ一つ
について別途ご質問してください。
No.1
- 回答日時:
ファイル名は質問文にある通りの命名規則なら、配列などに入れた状態で、文字列としてソートすればいいんじゃないですかね。
テキストファイルの読み込みと書き出しなら検索すれば出てくるでしょう。
http://www.google.com/search?hl=ja&lr=lang_ja&ie …
どうせなら HTML としてのヘッダーやフッターの部分もそれぞれテキストファイルに持っておいて連結したら良いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/02/05 09:55
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- PHP 掲示板を作成しておりアップロードファイルとメッセージを並べたいので、アドバイスお願い致します 2 2023/07/17 21:01
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BCPユーティリティの使用法_...
-
VBAでPowerPointからExcelにデ...
-
VB.NETでテキストファイルからH...
-
Excel.VBA テキストファイルを...
-
複数行の文字列を変数として使...
-
access vbaでCSVファイルを文...
-
ある文字列を含む行の抽出
-
ExcelVBAを使ってシートの行の...
-
VBAで任意のフォルダ内のファイ...
-
特定フォルダ内のテキストファ...
-
テキストファイルの行頭に文字...
-
VB6側からテキストファイルをク...
-
VBAで新しい日付順にファイルを...
-
cobolのコメント削除
-
C#でのファイル編集と上書き保...
-
テキストファイルを直接置換す...
-
正規表現を使って、日英の2行...
-
コマンドプロンプトの「%1」と...
-
研究する文献がたくさんありま...
-
バッチでテキストファイルから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでPowerPointからExcelにデ...
-
特定フォルダ内のテキストファ...
-
VB6側からテキストファイルをク...
-
複数行の文字列を変数として使...
-
Excel.VBA テキストファイルを...
-
BCPユーティリティの使用法_...
-
fortranでのcsvファイルを出力...
-
テキストファイルの行頭に文字...
-
ある文字列を含む行の抽出
-
テキストファイルを直接置換す...
-
VBAで新しい日付順にファイルを...
-
unicode文字列(日本語)のファイ...
-
iniファイルとの比較(iniファイ...
-
access vbaでCSVファイルを文...
-
バッチでiniファイルの編集
-
A列をテキストファイル名に、B...
-
VBAで任意のフォルダ内のファイ...
-
C#でのファイル編集と上書き保...
-
ランレングス符号化を用いた符...
-
cobolのコメント削除
おすすめ情報