Avatar billede evh Nybegynder
31. januar 2002 - 20:59 Der er 3 kommentarer og
1 løsning

Skriverettighed på net, i regneark

Kan det lade sig gøre at lægge er Excel regneark ud på et ganske almindeligt webhotel og fortsat have mulighed for at læse og skrive i det.

Hvis nej, vil direkte adgang til en server hjælpe på det?
Avatar billede odegaard Nybegynder
02. februar 2002 - 15:19 #1
Nej.
Du kan forbinde til et excel-regneark som om det var en database. Så det skulle kunne gøres på en anden måde via asp.net...
Avatar billede reffak Nybegynder
20. februar 2002 - 16:27 #2
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.

God fornøjelse

MVH
Avatar billede reffak Nybegynder
20. februar 2002 - 16:42 #3
...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.

MVH
Avatar billede harby Nybegynder
04. marts 2002 - 20:44 #4
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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester