I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Hej Som Odegaard siger, kan du nemmest opnå den ønskede funktionalitet ved at åbne regnearket som en database. Følgende kodefragment gør dette:
Dim OleConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=""" & Filename & """;" & "Extended Properties=""Excel 8.0;"""
Dim OleDA As OleDbDataAdapter = New OleDbDataAdapter(Sql, OleConnString) Dim ds As DataSet OleDA.Fill(ds)
-Du skal blot huske at importere System.Data.OleDb og System.Data. Altså følgende linjer øverst: <%@Import Namespace="System.Data.OleDb"%> <%@Import Namespace="System.Data"%>
Nu står du med et dataset. Du kan både læse og skrive fra/til dette. Variablen Filename der indgår i kodefragmentet, er navnet på din excel fil. F.eks : C:\myexcelworkbook.xls
-Hvis du ikke er sikker på hvad stien til din fil er, når du har lagt den ud på en server, kan du bruge funktionen Server.MapPath("myexcelworkbook.xls"), der så vil returnere den fulde sti.
Variablen Sql en standard SQL sætning. Hvis din excel fil f.eks. indeholder et ark (sheet) med navnet Ark1, kunne Sql f.eks. være :
Sql = "SELECT * FROM [Ark1$]"
Bemærk dollartegnet! Dette skal altid efterfølge arkets navn.
...I VB6 kunne man i øvrigt godt åbne et regneark på en anden, mere direkte måde, ved at lave en ActiveX DLL fil. Dette krævede dog at man havde fuld adgang til serveren der hostede ens site, da man skulle registrere sin dll fil direkte. Desuden kræver det, at man har Excel installeret på serveren. Men når det først er klaret, kan man rode rundt i filen præcis som man vil. Et eksempel:
Dim m_ExcelApp As Excel.Application Dim m_WorkBook As Excel.Workbook Dim m_ExcelSheet As Excel.Worksheet
Set m_ExcelApp = New Excel.Application Set m_WorkBook = ExcelApp.Workbooks.Open(Filename) Set m_ExcelSheet = m_WorkBook.Worksheets("Ark1")
Nu har du alt den funktionalitet du kunne ønske dig, direkte fra objektet m_ExcelSheet. Du kunne f.eks. læse værdien af 1. Række, 2. Søjle således :
m_ExcelSheet.Cells(1, 2)
-Eller skrive en værdi direkte ind:
m_ExcelSheet.Cells(1, 2) = "Ok"
Jeg har selv arbejdet med begge dele, og kan klart anbefale .NET løsningen. Denne er ca. 10 gange hurtigere i praksis, og kræver ikke direkte adgang til serveren.
Jeg er imponeret af dit særdeles fyldige svar reffak - det tog lidt tid før jeg modtog det, da jeg lige er kommet tilbage efter 3 uger i Indien (og jeg rejser igen på Torsdag...). Men dit svar er lige til at gå til, så det vil jeg klart arbejde videre med. (hvor dan i h... giver jeg dig point.... NYT SPØRGSMÅL!)
Mvh EV
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.