Hello one and all,
I'm developing an Asp.NET system to take a CSV file uploaded via the web,
parse it, and insert the values into an SQL database. My sticking point
comes when I try to split() the string returned by readline() on the file.
The following code snippet works for me:
tokens = "one,two,three, four".Split("," )
for each token in tokens
response.write( "<td>"+toke n+"</td>")
next
However, if I take the next line in the CSV, read using
StreamReader.Re adLine on the PostedFile.Inpu tStream, I receive "Object
reference not set to an instance of an object." which I have narrowed down
to be my string holding the line. Further investigation reveals that no
other string member functions work on my line (.ToCharArray, .ToString,
etc).
I suspect that StreamReader.Re adLine is not correctly returning a string,
even though Response.Write( line) displays what I would expect.
I would appreciate any help or suggestions anybody can offer as to what's
going on here.
Thanks,
Andy
-- code --
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="Syst em.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<link href="adwords.c ss" rel="stylesheet " type="text/css" media="screen" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload CSV</title>
</head>
<body>
<script runat="server">
Sub UploadFile_Clic ked(Sender as Object, e as EventArgs)
Dim str As Stream
str = loFile.PostedFi le.InputStream( )
Dim sr As StreamReader = New StreamReader(st r)
Dim tokens as String() = Nothing
Dim line, token, t as String
Dim i as integer
for i = 1 to 6
line = sr.ReadLine()
next i
response.write( "<table>")
do
line = sr.ReadLine()
response.write( "<tr>")
tokens = line.Split(Cont rolChars.Tab)
for each token in tokens
response.write( "<td>"+toke n+"</td>")
next
response.write( "</tr>")
loop until line is nothing
response.write( "</table>")
sr.close()
End sub
</script>
<form action="upload. aspx" method="post" enctype="multip art/form-data"
runat="server">
<fieldset>
<legend>Selec t a file to upload:</legend>
<p><input id="loFile" type="file" runat="server"> </p>
<p><input type="submit" OnServerClick=" UploadFile_Clic ked"
class="clientlo ginsubmit" name="Submit" value="Upload AdWords CSV"
runat="server" /></p>
</fieldset>
</form>
</body>
</html>
I'm developing an Asp.NET system to take a CSV file uploaded via the web,
parse it, and insert the values into an SQL database. My sticking point
comes when I try to split() the string returned by readline() on the file.
The following code snippet works for me:
tokens = "one,two,three, four".Split("," )
for each token in tokens
response.write( "<td>"+toke n+"</td>")
next
However, if I take the next line in the CSV, read using
StreamReader.Re adLine on the PostedFile.Inpu tStream, I receive "Object
reference not set to an instance of an object." which I have narrowed down
to be my string holding the line. Further investigation reveals that no
other string member functions work on my line (.ToCharArray, .ToString,
etc).
I suspect that StreamReader.Re adLine is not correctly returning a string,
even though Response.Write( line) displays what I would expect.
I would appreciate any help or suggestions anybody can offer as to what's
going on here.
Thanks,
Andy
-- code --
<%@ Page Language="VB" Debug="true" %>
<%@ Import Namespace="Syst em.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<link href="adwords.c ss" rel="stylesheet " type="text/css" media="screen" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Upload CSV</title>
</head>
<body>
<script runat="server">
Sub UploadFile_Clic ked(Sender as Object, e as EventArgs)
Dim str As Stream
str = loFile.PostedFi le.InputStream( )
Dim sr As StreamReader = New StreamReader(st r)
Dim tokens as String() = Nothing
Dim line, token, t as String
Dim i as integer
for i = 1 to 6
line = sr.ReadLine()
next i
response.write( "<table>")
do
line = sr.ReadLine()
response.write( "<tr>")
tokens = line.Split(Cont rolChars.Tab)
for each token in tokens
response.write( "<td>"+toke n+"</td>")
next
response.write( "</tr>")
loop until line is nothing
response.write( "</table>")
sr.close()
End sub
</script>
<form action="upload. aspx" method="post" enctype="multip art/form-data"
runat="server">
<fieldset>
<legend>Selec t a file to upload:</legend>
<p><input id="loFile" type="file" runat="server"> </p>
<p><input type="submit" OnServerClick=" UploadFile_Clic ked"
class="clientlo ginsubmit" name="Submit" value="Upload AdWords CSV"
runat="server" /></p>
</fieldset>
</form>
</body>
</html>
Comment