Hvordan kan jeg auto grensesnitt et Excel-regneark?

stemmer
4

Jeg har en forespørsel for noen oppdrag fra en organisasjon som bruker Excel som en database , og ønsker å gjøre noe arbeid på Excel-data via en ekte database. (Ja, jeg vet, never mind ...)

Klienten har et Excel-ark som de bruker internt for å holde styr på noen offentlige programmer. Dataene fra denne Excel-ark som brukes til å bli importert manuelt i en SQL-database via CSV som mellom format og gjøres tilgjengelig via en liten web app. Endringer i enten regneark eller db ble gjort manuelt (av forskjellige personer) og måtte holdes synkronisert manuelt.

Spesifikasjonen for ny funksjonalitet inkluderer:

  • laste opp Excel-filen i web-app
  • foreta mindre endringer via web app (denne biten er, selvfølgelig, en no-brainer)
  • tidvis eksportere dataene tilbake til Excel

Regnearket (faktisk, det er et par av dem i en arbeidsbok) implementerer noen retningslinjer er nødvendige for å samhandle med andre institusjoner og derfor må forbli den samme strukturelt før og etter import. Den inneholder en rekke formaterings, skjulte kolonner og sortere knapper, samt en rekke dataforbindelser mellom cellene i de ulike ark.

Jeg ønsker ikke å ha for å reprodusere regnearket fra grunnen av for å levere eksport, heller ikke jeg ønsker å trekke ut de riktige kolonnene i CSV manuelt før importen. Jeg heller leter etter en måte å laste Excel, søket visse felt, skriver du dem til DB og senere laste dataene tilbake fra DB og manipulere bare innholdet i de riktige cellene.

Er det en måte å auto grensesnitt med et eksisterende regneark og bare lese eller endre biter som du trenger?

Publisert på 25/10/2008 klokken 17:45
kilden bruker
På andre språk...                            


6 svar

stemmer
1

Du kan være interessert i Excel 2007 Samarbeids funksjoner (som redigerer et xls fra nettet).

Svarte 25/10/2008 kl. 17:59
kilden bruker

stemmer
10

Excel er et 'COM Capable Application' og som du kan bruke COM for å få tilgang til og manipulere data i et Excel-dokument. Du trenger ikke si hvilken plattform du bruker - men hvis det er .NET så det er egentlig veldig enkelt. Se http://support.microsoft.com/kb/302084 for hvordan du kan komme i gang med C #.

Hvis du ikke bruker .net da alle språk som kan samhandle med en COM komponent vil fungere.

Svarte 25/10/2008 kl. 18:05
kilden bruker

stemmer
2

Vi leser og manipulere Excel-data via Apache POI , som ikke er fullstendig i dekoding Excel-filer (nemlig formel cellene er ikke helt støttes), men våre kunder er ganske fornøyd med oss.

POI er et Java-bibliotek, så hvis du er en ren Windows handle det kan være andre mer naturlige alternativer, men som jeg sa, vår erfaring med POI er veldig bra, folk er glade.

I tillegg: Jeg mener å ha hørt om sjåfører Excel ODBC - kanskje dette er hva du ønsker / trenger? (Sorry, jeg har aldri jobbet med dem)

Svarte 25/10/2008 kl. 18:17
kilden bruker

stemmer
4

Den samme API som brukes av VBA er tilgjengelig gjennom en ekstern COM-grensesnitt. Det er ganske mange bøker om emnet. Jeg anbefaler O'Reilly en av Steven Roman, men din smak kan variere.

Svarte 25/10/2008 kl. 18:54
kilden bruker

stemmer
3

Du trenger ikke oppgi et språk, så hvis du er språket agnostiker Net gir deg noen svært kraftige klasser for databehandling:

å åpne en CSV-fil:

Import System.Data.OleDb, import Excel = Microsoft.Office.Interop.Excel

    Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DataFolder + "\;Extended Properties='text;HDR=Yes'"

    Dim conn As New System.Data.OleDb.OleDbConnection(ConnectionString)
    conn.Open()

    Dim CommandText As String = CommandText = "select * from [" + CSVFileName + "]"
    If Filter.Length > 0 Then
        CommandText += " WHERE " + Filter
    End If

    Dim daAsset As New OleDbDataAdapter(CommandText, conn)
    Dim dsAsset As New DataSet
    daAsset.Fill(dsAsset, "Asset")

åpne et ark i en arbeidsbok er svært lik - du angir navnet ark og kan deretter fylle et datasett med hele arket. - Du kan da få tilgang til tabellene () Rows () av ​​datasettet for å få hver rad og felt, iterere over hver rad etc.

Svarte 29/10/2008 kl. 18:07
kilden bruker

stemmer
1

En annen tilnærming ville være å skrive et Excel-funksjon som snakker til databasen direkte og returnerer resultatet som en matrise.

Hvis du tror denne tilnærmingen ville fungere godt du kan prøve XLLoop - dette gjør det enkelt å skrive utmerke funksjoner i Java, Python, Ruby, Perl, R, Lisp, Erlang.

Svarte 08/05/2009 kl. 17:13
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more