- 追加された行はこの色です。
- 削除された行はこの色です。
閲覧総計:&counter(); (本日:&counter(today); 昨日:&counter(yesterday);)
ASP.NETでのCSVファイルの読込みの方法を確認した。 09/09/22
↓参考にしたページ:「CSVファイルを読み込むには?」06/08/16
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.html
.NET Framework2.0からTextFieldParserクラス(Microsoft.VisualBasic.FileIO
名前空間)が提供されCSVファイルのハンドリングが非常に簡単になっている。
(背景)
ASP.NET開発はSQL Server等のDBMSを利用する事が前提になっており、CSVファイル
の読込み方法はあまり紹介されていない。エクセルデータをASP.NETで扱いたい場合、
CSVファイルを介在することが多いので、今回確認した。
開発環境:VWD2005+AJAX1.0+Toolkit + SQL Server2005
サーバ:ASP.NET2.0+AJAX1.0 + SQL Server2005
【稼動サンプル】
http://www.kuri6005.fscs.jp/4AspNet10/Csv/CsvRead.aspx
#ref(textRW01.JPG);
#ref(CsvRead.JPG);
※csvファイル(text.csv(S_JIS保存))は、プログラムと同じフォルダ内に置く。
コントロールの設定値
|~コントロール|~プロパティ|~値|~コメント|
|TextBox1|TextMode|MultiLine|複数行表示に設定|
【TextRW.aspx】
【CsvRead.aspx】
<%@ Page Language="VB" %>
<%@ Import Namespace = "Microsoft.VisualBasic.FileIO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
'参考ページ:テキストファイルの入出力 07/04/18
'http://migelnanai.blog.so-net.ne.jp/2007-04-18-1
Protected Sub btnWrite_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim strFile As String = Server.MapPath("test01.txt")
'入力するテキスト
Dim strInputText As String = TextBox1.Text
'↓参考にしたページ:「CSVファイルを読み込むには?」 06/08/16
'http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.html
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
'Shift_JISのファイルに書き込む。
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
System.IO.File.WriteAllText(strFile, strInputText, enc)
End Sub
Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim strFile As String = Server.MapPath("test01.txt")
'入力するテキスト
Dim strInputText As String = TextBox1.Text
Dim parser As New TextFieldParser(Server.MapPath("text.csv"), _
System.Text.Encoding.GetEncoding("Shift_JIS"))
'Shift_JISのファイルに書き込む。
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
System.IO.File.AppendAllText(strFile, strInputText, enc)
End Sub
Protected Sub btnRead_Click(ByVal sender As Object, ByVal e As System.EventArgs)
'Dim strFile As String = "ファイル名"
Dim strFile As String = Server.MapPath("test01.txt")
'Shift_JISのファイルを読み込む。
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
'テキストファイルの中身をすべて読み込む
Dim strText As String = System.IO.File.ReadAllText(strFile, enc)
parser.TextFieldType = FieldType.Delimited '固定長データではなく可変長データを宣言
parser.SetDelimiters(",") ' 区切り文字はコンマ
TextBox1.Text = strText
While Not parser.EndOfData
Dim row As String() = parser.ReadFields() '1行読み込み
' 配列rowの要素は読み込んだ行の各フィールドの値
For Each field As String In row
field = field.Replace(vbCrLf, "n") ' 改行をnで表示
field = field.Replace(" ", "_") ' 空白を_で表示
'Console.Write(field + vbTab) ' TAB区切りで出力
TextBox1.Text &= field & vbTab
Next
'Console.WriteLine()
TextBox1.Text &= vbCrLf
End While
End Sub
Protected Sub btnDel_Click(ByVal sender As Object, ByVal e As System.EventArgs)
'Dim strFile As String = "test01.txt"
Dim strFile As String = Server.MapPath("test01.txt")
'入力するテキスト
Dim strInputText As String = ""
TextBox1.Text = ""
'Shift_JISのファイルに書き込む。
Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
System.IO.File.WriteAllText(strFile, strInputText, enc)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
</head>
<body>
<form id="form1" runat="server">
<div>
テキストファイルの書込み・読込み 09/08/12<br />
CSVファイルの読込み稼働確認 09/09/21<br />
<br />
【機能】テキストファイルの上書き書込み、追加書込<br />
み、読み出し、消去を行う。<br />
<asp:TextBox ID="TextBox1" runat="server" Height="175px" Width="327px" TextMode="MultiLine"></asp:TextBox><br />
<asp:Button ID="btnWrite" runat="server" OnClick="btnWrite_Click" Text="上書き書込み" />
<asp:Button ID="btnAdd" runat="server" Text="追加書込み" OnClick="btnAdd_Click" />
<asp:Button ID="btnRead" runat="server" Text="読出し" OnClick="btnRead_Click" />
<asp:Button ID="btnDel" runat="server" Text="消去" OnClick="btnDel_Click" /><br />
</div>
<asp:TextBox ID="TextBox1" runat="server" Height="120px" TextMode="MultiLine" Width="271px"></asp:TextBox></div>
</form>
</body>
</html>
【参考にしたページ】
1.テキストファイルの入出力 07/04/18
http://migelnanai.blog.so-net.ne.jp/2007-04-18-1
2.テキスト・ファイルの内容を簡単に書き込むには? 07/12/06
http://www.atmarkit.co.jp/fdotnet/dotnettips/680filewriteall/filewriteall.html
【サーバ設置時のハマリポイント】
txtファイルの書込み・読込みプログラムをサーバに設置した時、最初はうまく
動いてくれなかった。原因は、対象フォルダの「書き込み権限」の許可がされていな
かったからだった。
皆さん、サーバ対象フォルダの「書き込み権限」の許可設定を忘れないようにしま
しょう。 09/08/12
(設定操作)
サーバにloginし、「ファイルのフォルダの管理(ファイルマネジャ)」で
対象プログラムを設置したフォルダのWeb Visitorの「書き込み」にチェックを付け、
「Apply」ボタンをクリックし、情報更新を行う。
#ref(textRW02.JPG);
#comment_nospam
#vote(参考になった[0],ふつう[0],参考にならなかった[0])