Programmatisk skape Excel 2007 blad

stemmer
14

Jeg prøver å lage Excel 2007-dokumenter programmatisk. Nå er det to måter jeg har funnet:

Foreløpig bruker jeg ExcelPackage, som har noen virkelig alvorlige ulemper og problemer. Som jeg ikke trenger å skape altfor komplekse Excel ark (den mest komplisert ting er at jeg eksplisitt må sette en celletype til numerisk eller tekst), Jeg ser mot alternativ 1 neste, men jeg bare lurer på om det er noen andre gode og støttet måter å generere Excel 2007 blad? Bonuspoeng hvis de kan skapes uten å lagre dem på harddisken, dvs generere og direkte utgang dem inn i en bekk.

.net 3.0 er målet her, ikke 3,5 godhet :(

Edit: Takk så langt. XML SDK er faktisk 3,5 bare, men russisk Roulet ... erm ... COM Interop er også noe jeg ønsker å unngå når det er mulig, spesielt siden Excel 2007 har en noe komplisert, men fortsatt ganske enkelt å lage dokumentformat. Jeg skal ta en titt på de forskjellige linkene og hint postet.

Publisert på 30/09/2008 klokken 12:21
kilden bruker
På andre språk...                            


8 svar

stemmer
9

Du kan prøve å bruke Office Open XML SDK . Dette vil tillate deg å lage Excel-filer i minnet ved hjelp av si en MemoryStreamog mye lettere enn å generere hele XML hånd.

Som Brian Kim påpekt, versjon 2.0 av SDK krever .NET 3.5 som du sa ikke var tilgjengelig. Versjon 1 av SDK er også tilgjengelig som støtter .NET 3.0. Det er ikke så komplett, men vil i det minste hjelpe deg å håndtere XML deler av dokumentet og relasjonene mellom dem.

Svarte 30/09/2008 kl. 12:25
kilden bruker

stemmer
0

Jeg pleide å generere tekstbehandling Markup dokumenter ved hjelp av et bibliotek med funksjoner for å skape den riktige XML for tabeller og avsnitt.

Jeg så nettopp endret MIME-typen for Response header å være et Word-dokument og sendt XML som respons til klienten. Det enten åpner i nettleseren eller lagrer som en fil.

Det ser ikke ut til å være den samme 2003 SDK for Excel selv om det er MS Open XML SDK

Svarte 30/09/2008 kl. 12:27
kilden bruker

stemmer
0

Excel er svært prosedyre gjennom COM-objekter. Jeg har ikke prøvd det, men dette bør være en solid løsning, men verken rask eller lett.

Uansett hva du ender opp med å gjøre, sjekk om din løsning støtter Unicode. Jeg har kjørt inn i noen alvorlige problemer med å bruke eksisterende løsninger for å skrive xls-filer (som er, pre 2007-filer).

Svarte 30/09/2008 kl. 12:27
kilden bruker

stemmer
0

Du kan bruke Primary Interop Assemblies (Office API) for å programma generere Excel dokumenter - Jeg ville ikke ønsker å gjøre noe uoversiktlig å bruke dem, men det høres ikke ut som det er kravet.

Denne tilnærmingen bør arbeide for å generere dokumenter i minnet også.

Her er noen ressurser:

Svarte 30/09/2008 kl. 12:29
kilden bruker

stemmer
0

Hver kode-snobb live hater VBScript, men det er enkelt og det fungerer:

Set myxlapp = CreateObject("Excel.Application")
Set mywb = myxlapp.Workbooks.Add
myxlapp.Visible = true

Sette det i en tekstfil, føyer en "VBS" på slutten og vips.

Svarte 30/09/2008 kl. 19:00
kilden bruker

stemmer
1

Jeg hadde tenkt å kommentere BKimmel innlegg, men tydeligvis jeg ikke har nok så kult punkter ennå.

Hvis Excel allerede er åpen, kan du få det irriterende "personal.xls er allerede åpen" -melding. Jeg prøver å få programmet først. Hvis det mislykkes, deretter opprette det:

On Error Resume Next
Set myxlApp  = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
  Err.Clear
  Set myxlApp = CreateObject("Excel.Application")
  If Err.Number <> 0 Then
    ' return False, show message, etc.
  End If
End If
Svarte 30/09/2008 kl. 19:32
kilden bruker

stemmer
2

Jeg bare genererer HTML-tabell, som kan åpnes av Excel:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Wnioski</title>
<style type="text/css">
<!--
br { mso-data-placement: same-cell; }
td { mso-number-format: \@; mso-displayed-decimal-separator: "."; }
-->
</style>

<table>
<tr style="height:15.0pt">
<td style="mso-number-format: general">474</td>
<td>474</td>

<tr>
<td>data2</td>
<td>data3</td>

<tr>
<td style="mso-number-format: &quot;yyyy-mm-dd&quot;">2008-10-01</td>
<td style="mso-number-format: standard">0.00</td>

<tr>
<td style="mso-number-format: general">line1<br>line2<br>line3</td>
<td></td>

</table>

Dette fungerer godt også som en datakilde for seriebrev i Word, jobber med Openoffice Calc etc. Og det er død enkelt å generere.

Svarte 01/10/2008 kl. 06:30
kilden bruker

stemmer
1

Jeg gjorde det meste av Open XML (xlsx) arbeid i SpreadsheetGear for NET , og det er langt fra en triviell oppgave. Jeg anbefaler å bruke Office Open XML SDK eller annen tredje part bibliotek som SpreadsheetGear eller en av våre konkurrenter (bare Google "SpreadsheetGear" for å se hvem som våre konkurrenter er).

SpreadsheetGear for .NET synes å møte dine behov:

  • Fungerer med .NET 2.0, .NET 3.0 og .NET 3.5.
  • Støtter du skriver til en bekk med IWorkbook.SaveToStream eller skriver til en byte array med IWorkbook.SaveToMemory.
  • Støtter Excel 97-2003 (xls) arbeidsbøker som er sannsynlig å bli den neste tingen du blir spurt om hvis du trenger å støtte svært mange brukere.

Du kan laste ned en gratis, fullt funksjonell evaluering her .

Svarte 28/01/2009 kl. 05:26
kilden bruker

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