Avatar billede crawn Nybegynder
03. februar 2003 - 16:24 Der er 3 kommentarer og
1 løsning

ASP og Excel

Jeg har ladet mig fortælle, at man dynamisk kan hente data fra et excel regneark og vise indholdet heraf, som var det en fx. access-db. 

Er der nogen der erfaring med dette eller evt. viden om hvor man kan læse mere om dette?

Jeg vil gerne kunne foretage ændringer i en excel-fil (ændre fx. prisen på æbler fra 2 til 3 kr), og så nøjes med at uploade excel-filen til mit site, og så lade asp-siden automatisk hente de ændrede data fra excel-filen.

TNX in ADV! Crawn
Avatar billede hnteknik Novice
03. februar 2003 - 16:43 #1
Yeps
Henrik

et eksempel :

'If you want to and you have Excel loaded on your machine you can load the csv into an ADO object like this:

Dim cn As New Connection
Dim rs As New Recordset

Private Sub Form_Load()
      Dim fld As Field
      rs.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=C:\" & Com.FileName & ";" & _
          "Extended Properties=""Excel 8.0;"""
      Do While Not rs.EOF
          For Each fld In rs.Fields
              If IsNull(fld.Value) Then
                  debug.print "There is a null value in Record Number: " & rs.AbsolutePosition
                  Exit For
              End If
          Next
      Loop
      rs.close
      set rs = nothing
end sub
Avatar billede hnteknik Novice
03. februar 2003 - 16:45 #2
Og du får også lige denne her med:

HOWTO: Query and Update Excel Data Using ADO From ASP
The information in this article applies to:
ActiveX Data Objects (ADO) 1.0
ActiveX Data Objects (ADO) 1.5
ActiveX Data Objects (ADO) 2.0
ActiveX Data Objects (ADO) 2.1 SP2
ActiveX Data Objects (ADO) 2.5
Microsoft Active Server Pages
Microsoft Data Access Components 2.5
This article was previously published under Q195951
SUMMARY
This article demonstrates how to query and update information in an Excel spreadsheet using ActiveX Data Objects (ADO) from an Active Server Pages (ASP) page. The article also describes the limitations that are associated with this type of application.

IMPORTANT: Though ASP/ADO applications support multi-user access, an Excel spreadsheet does not. Therefore, this method of querying and updating information does not support multi-user concurrent access.
MORE INFORMATION
To access the data in your Excel spreadsheet for this sample, use the Microsoft ODBC Driver for Excel. Create a table to access the data by creating a Named Range in your Excel spreadsheet.
Steps to Create Sample Application
Create the Excel file ADOtest.xls with the following data in sheet1:

column1 column2 column3
rr  this 15
bb test 20
ee works 25

NOTE: If a column in your Excel spreadsheet contains both text and numbers, the Excel ODBC driver cannot correctly interpret which data type the column should be. Please make sure that all the cells in a column are of the same data type. The following three errors can occur if each cell in a column is not of the same type or you have the types mixed between "text" and "general":
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

The request properties can not be supported by this ODBC Driver.
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

The query is not updateable because it contains no searchable columns to use as a hopeful key.
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

Query based update failed. The row to update could not be found.
Create a Named Range, myRange1, in your spreadsheet:


Highlight the row(s) and column(s) area where your data resides.
On the Insert menu, point to Name, and click Define.
Enter the name myRange1 for the Named Range name.
Click OK.
The Named Range myRange1 contains the following data:

column1 column2 column3
rr this 15
bb test 20
ee works 25


NOTE: ADO assumes that the first row in an Excel query contains the column headings. Therefore, the Named Range must include the column headings. This is different behavior from DAO.

NOTE: Column headings cannot be a number. The Excel driver cannot interpret them and, instead, returns a cell reference. For example, a column heading of "F1" would be misinterpreted.
Create an ODBC System Data Source Name (DSN) pointing to the ADOTest.xls file.
From the Control Panel, open the ODBC Administrator.
On the System DSN tab, click Add.
Select Microsoft Excel Driver (*.xls) and click Finish. If this option does not exist, you need to install the Microsoft ODBC driver for Excel from Excel setup.
Choose ADOExcel for the Data Source Name.
Make sure the Version is set to the correct version of Excel.
Click "Select Workbook...", browse to the ADOTest.xls file, and click OK.
Click the "Options>>" button and clear the "Read Only" check box.
Click OK and then click OK again.
Set permissions on the ADOTest.xls file.
If your Active Server Page is accessed anonymously, you need to make sure that the Anonymous Account (IUSR_<MachineName>) has at least Read/Write (RW) access to the spreadsheet. If you want to delete information from the spreadsheet, you need to grant the permissions accordingly.

If you are authenticating access to your Active Server Page, you need to ensure that all users accessing your application have the appropriate permissions.

NOTE: If you do not set the appropriate permissions on the spreadsheet, you get an error message similar to the following:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'



[Microsoft][ODBC Excel Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
Create a new ASP page and paste in the following code:
      <!-- Begin ASP Source Code -->
      <%@ LANGUAGE="VBSCRIPT" %>
      <%
        Set objConn = Server.CreateObject("ADODB.Connection")
        objConn.Open "ADOExcel"

        Set objRS = Server.CreateObject("ADODB.Recordset")
        objRS.ActiveConnection = objConn
        objRS.CursorType = 3                    'Static cursor.
        objRS.LockType = 2                      'Pessimistic Lock.
        objRS.Source = "Select * from myRange1"
        objRS.Open
  %>
  <br>
  <%
      Response.Write("Original Data")

      'Printing out original spreadsheet headings and values.

      'Note that the first recordset does not have a "value" property
      'just a "name" property.  This will spit out the column headings.

      Response.Write("<TABLE><TR>")
      For X = 0 To objRS.Fields.Count - 1
        Response.Write("<TD>" &amp; objRS.Fields.Item(X).Name &amp; "</TD>")
      Next
      Response.Write("</TR>")
      objRS.MoveFirst

      While Not objRS.EOF
        Response.Write("<TR>")
        For X = 0 To objRS.Fields.Count - 1
            Response.write("<TD>" &amp; objRS.Fields.Item(X).Value)
        Next
        objRS.MoveNext
        Response.Write("</TR>")
      Wend
      Response.Write("</TABLE>")

      'The update is made here

      objRS.MoveFirst
      objRS.Fields(0).Value = "change"
      objRS.Fields(1).Value = "look"
      objRS.Fields(2).Value = "30"
      objRS.Update

      'Printing out spreadsheet headings and values after update.

      Response.Write("<br>Data after the update")
      Response.Write("<TABLE><TR>")
      For X = 0 To objRS.Fields.Count - 1
        Response.Write("<TD>" &amp; objRS.Fields.Item(X).Name &amp; "</TD>")
      Next
      Response.Write("</TR>")
      objRS.MoveFirst

      While Not objRS.EOF
        Response.Write("<TR>")
        For X = 0 To objRS.Fields.Count - 1
            Response.write("<TD>" &amp; objRS.Fields.Item(X).Value)
        Next
        objRS.MoveNext
        Response.Write("</TR>")
      Wend
      Response.Write("</TABLE>")

      'ADO Object clean up.

      objRS.Close
      Set objRS = Nothing

      objConn.Close
      Set objConn = Nothing
  %>
  <!-- End ASP Source Code -->
                   
Save and name your Active Server Page and view it in the browser. You will see the following:
      Original Data:

      column1    column2    column3
      -----------------------------

      rr        this      30
      bb        test      20
      tt        wow        25


      Data after the update:

      column1    column2    column3
      -----------------------------

      change    look      30
      bb        test      20
      tt        wow        25
                   
NOTE: An update was performed on the first row of your Named Range (after the headings).

Microsoft Data Access Components (MDAC) version 2.6 and later do not contain the following Jet components
Avatar billede askhoej Praktikant
03. februar 2003 - 16:47 #3
Avatar billede crawn Nybegynder
03. februar 2003 - 18:01 #4
det må jeg sige var et udpenslende svar... nu må jeg så se om jeg kan finde ud af at bruge det ;)

tnx
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