Avatar billede renard Nybegynder
08. marts 2007 - 18:54 Der er 7 kommentarer og
1 løsning

Lav excel fil ud fra data i asp.net

Hej, hvordan genererer jeg en excel fil ud fra data på et asp.net site? Altså en knap, der tager data, laver et excel ark og putter dataen ind der...
Avatar billede jens_klinting Nybegynder
10. marts 2007 - 08:31 #1
Hej,
Det er desværre ikke helt simpelt at lave Excel-filer på et website. Jeg skal ikke udelukke, at et eller anden firma, har lavet en kontrol, der kan gøre det. Men hvis den findes, har den sikkert den ulempe, at Excel skal køre på din server, og at du risikerer, at genereringen af Excel-filen smider en modal dialog op på serveren (og hvem smutter lige forbi serveren og klikker ok?)

Men til Excel 2007 er der lavet om i filformatet, så det nu består af XML-filer i en ZIP-fil. Og dermed kan man generere Excel-filer, uden at skulle have Excel på maskinen. Der er et Open Source projekt igang med at lave en objektmodel oven på Excel 2007s filformat. Og det kan findes her:

http://openxmldeveloper.org/articles/Creating_Spreadsheets_Server.aspx

Ulempen ved at bruge Excel 2007 formatet er jo så, at dine brugere ikke nødvendigvis har Excel 2007 installeret? Men måske kan de installere en konverter til deres evt. tidigere version af Excel?

God fornøjelse, og husk lige at læse licensbetingelserne til ExcelPackage, hvis du har tænkt dig at bruge det :o)

Mvh.
Jens
Avatar billede capn Nybegynder
11. marts 2007 - 12:21 #2
En anden mulighed kunne være at bruge .cvs (kommassepareret) som excel kan åbne. Det er nemt at skrive, men ulempen er at formattering ikke understøttes. Altså skriftstørelser, kolonnebredder og farver mm.

http://www.ogp-consult.dk
Avatar billede crazysnap Seniormester
11. marts 2007 - 14:33 #3
Hej capn,

Ikke for at træde i noget (bare så renard ikke bliver forvirret), men tror du mente det gamle filformat .csv (comma-separated values). :)

CVS er jo et open source versions kontrol system. :)


Mvh.

- Snap
Avatar billede capn Nybegynder
11. marts 2007 - 15:17 #4
Ja der fik jeg vist byttet lidt om på bogstaverne. Det hedder naturligvis csv.
Avatar billede renard Nybegynder
17. marts 2007 - 13:34 #5
Tak for input. Jeg har tidligere lavet et simpelt excel-ark på serveren i klassisk ASP og VB-script. Kan det passe, at man ikke kan gøre det tilsvarende simpelt i ASP.NET og C#?

Ex:
<%
    if request.QueryString("report") = "excel" then
    'Variables
    dim u_title, u_cell1, u_cell2, u_cell3, u_cell4, g_filename, fso, act
   
    'Get all values that are needed and assign variables
    if session("product") <> "" and session("product") <> "x" then
        u_title=session("retailer")&" - "&session("product")
    else
        u_title="Navn"
    end if
    u_cell1="Customer&nbsp;"
    u_cell2=session("chain") &" - "& session("retailer")
    u_cell3="Product&nbsp;"
    u_cell4=session("product")
   
    ' Varible created fo excel file name. Spaces are changed to underscores
    ' and later the current date is added in attempts to create a unique file
    ' Users are not prevented from entering characters !@#$%^&*()+= that are
    ' invalid file names in this example
    g_filename=replace(u_title," ","_")
    g_filename=replace(u_title,",",".")
   
   
    set fso = createobject("scripting.filesystemobject")
    ' create the text (xls) file to the server adding the -ddmmyyyy after the g_title value
    Set act = fso.CreateTextFile(server.mappath(""&g_filename &"_"& day(date())&"-"& month(date())&"-"& year(date()) &".xls"), true)
   
    ' write all of the user input to the text (xls) document
    ' The .xls extension can just as easily be .asp or .inc whatever best suits your needs
    ' Providing that you remove the info contained in the header and remove the xml
    ' reference in the html tag that starts the page/excel file. It is to add gridlines and
    ' a title to the excel worksheet
    act.WriteLine "<html xmlns:x=""urn:schemas-microsoft-com:office:excel"">"
    act.WriteLine "<head>"
    act.WriteLine "<!--[if gte mso 9]><xml>"
    act.WriteLine "<x:ExcelWorkbook>"
    act.WriteLine "<x:ExcelWorksheets>"
    act.WriteLine "<x:ExcelWorksheet>"
    act.WriteLine "<x:Name>"& u_title &"</x:Name>"
    act.WriteLine "<x:WorksheetOptions>"
    act.WriteLine "<x:Print>"
    act.WriteLine "<x:ValidPrinterInfo/>"
    act.WriteLine "</x:Print>"
    act.WriteLine "</x:WorksheetOptions>"
    act.WriteLine "</x:ExcelWorksheet>"
    act.WriteLine "</x:ExcelWorksheets>"
    act.WriteLine "</x:ExcelWorkbook>"
    act.WriteLine "</xml>"
    act.WriteLine "<![endif]--> "
    act.WriteLine "</head>"
    act.WriteLine "<body>"
    act.WriteLine "<table>"
    act.WriteLine "<tr>"
    act.WriteLine "<td>"
    act.WriteLine u_cell1
    act.WriteLine "</td>"
    act.WriteLine "<td>"
    act.WriteLine u_cell2
    act.WriteLine "</td>"
    act.WriteLine "</tr>"
    act.WriteLine "<tr>"
    act.WriteLine "<td>"
    act.WriteLine u_cell3
    act.WriteLine "</td>"
    act.WriteLine "<td>"
    act.WriteLine u_cell4
    act.WriteLine "</td>"
    act.WriteLine "</tr>"
    act.WriteLine "</table>"
    act.WriteLine "</body>"
    act.WriteLine "</html>"
    ' close the document
    act.close
    %>
Avatar billede renard Nybegynder
20. april 2007 - 04:20 #6
Jeg takker for hjælpen, selvom jeg ikke er kommet frem til en løsning. Kom med svar jens_klinting og capn.
Avatar billede jens_klinting Nybegynder
20. april 2007 - 08:00 #7
Behold du bare selv pointene :o)
Avatar billede renard Nybegynder
24. april 2007 - 12:29 #8
Tak for hjælpen
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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