vb.net SORRY, såg inte att det var VB.NET forumet .... "Snabb-Ful-Kod" för VB.NET och Excell:Excel textfil till Datagrid
Hur gör jag smartast för att läsa en Excel textfil och visa den i en datagrid?
och stänga filen efter användning.
exempel på Excelfil (tabbavgränsad text?)
http://bors.affarsvarlden.se/mainclosearc.asp?settings=afv&withisin=0Sv: Excel textfil till Datagrid
Men, du kan använda OleDbConnection och connection-stringen nedan och sedan använda en OdbcDataReader.
Återkommer med kod för NET
'## -- FÖR Classic ASP --
Med ADO kan du komma åt Excell-filens innehåll.
Gjorde en lösning för ett tag sedan där man ville visa excell-filer "lite snyggare" på webben ... inte den optimala, men funkar för ändamålet och snabbt gick det att fixa till.
Har tagit bort "lite oviktig HTML-kod från koden nedan:
<code>
'## -- vilken fil som ska öppnas --
strFile = Request.QueryString("file")
'## -- connection-string mot en excell fil. i detta fall excell version 8 --
strConnString = "Data Source=" & Server.MapPath("/uploads/reports/" & strFile) & ";Extended Properties=Excel 8.0;"
'## -- sql-frågan som ska hämta poster från excell-filen --
'## notera att "tabellen" är excell-bladsnamnet + $ och klammrarna måste finnas där --
strSQL = "SELECT * FROM [20030605k$]"
'## -- skapa connection-object --
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Provider = "Microsoft.Jet.OLEDB.4.0"
objConn.ConnectionString = strConnString
objConn.Open
Set rstReport = Server.CreateObject("ADODB.Recordset")
rstReport.Open strSQL, objConn, 1, 3
intCnt = 0
'## -- loopa igenom alla poster --
While Not rstReport.EOF
%>
<TR valign="top">
<TD class="row">
<INPUT type="checkbox" name="cboxImport" value="<% =intCnt%>" checked>
</TD>
<%
'## -- loopa igenom varje fält och visa värdet --
For N = 0 TO (rstReport.Fields.Count - 1)
%>
<TD class="row">
<% =rstReport.Fields(N).Value%>
</TD>
<%
Next '## -- N --
intCnt = intCnt + 1
rstReport.MoveNext
Wend
rstReport.Close
Set rstReport = Nothing
objConn.Close
Set objConn = Nothing
</code>
Dvs, du accessar som mot "vilken" databas som helst. I detta fallet är det Excell som står som "databas motor" ;)
cya,
PatrikBSv: Excel textfil till Datagrid
<code>
<%@ Page Language="VB" Debug="True" %>
<%@ import Namespace="System" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.Oledb" %>
<script runat="server">
Private Sub Page_Load(sender As Object, e As EventArgs)
Dim cnn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & HttpContext.Current.Server.MapPath("/min-xls-folder/min-xls-fil.xls") & ";Extended Properties=Excel 8.0;")
Dim queryXl As String = "SELECT * FROM [BladetsNamnJagVillHämtaPosterFrån$]"
Dim cmd As New OleDbCommand(queryXl, cnn)
cnn.Open()
Dim _dr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
dgXls.DataSource = _dr
dgXls.DataBind()
_dr.Close()
End Sub
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<asp:DataGrid id="dgXls" runat="server" ShowHeader="False"></asp:DataGrid>
</form>
</body>
</html>
</code>
Så att du har och kan labba med och fixa till utseende etc ;o)