Avatar billede ivan_flaendsdal Nybegynder
11. april 2008 - 14:15 Der er 14 kommentarer og
1 løsning

sende .CSV filer fra server bliver til .XLS Filer

Hej..

Nogen der kan knække denne nød?

Jeg sender en CSV fil (den er simikolon seperet) ved brug af..

Response.Redirect("filnavn.csv")

men på clienten bliver den til "filnavn.xls"

jeg har forsøgt mig med response.writer.. men den er udlukket af andre årsager.

nogen der kan given Løsning?
Avatar billede mcnovy Nybegynder
12. april 2008 - 02:51 #1
er det til download, eller til visning direkte i browser..?

hvis det er til download,
så skulle denne gerne kunne virke
Stream stm;
            stm = new FileStream(Server.MapPath("") + "//Files//" + Filnavn + "." + FilType, FileMode.Open); (Filtype kunne være fast csv hvis du ønsker, og det samme med filnavn
        }
        byte[] b = new byte[(int)stm.Length];
        stm.Read(b, 0, b.Length);
        stm.Close();
        Response.ContentType = "application/octet-stream";
        Response.AddHeader("Content-Disposition", "attachment; filename=\"" + FilNavn + "\"");
        Response.BinaryWrite(b);
Avatar billede ivan_flaendsdal Nybegynder
12. april 2008 - 11:10 #2
Har lige prøvet med din løsning.
den svare så tilbage med :

"Der opstod en Microsoft JScript-kørselsfejl: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near 'Time;UL1;UL2;UL3;UL1'."


'Time;UL1;UL2;UL3;UL1' er den første del af filene...
Jeg har Ajax på siten. og denne del af koden ligge i en dynamisk oprette web.usercontrol..

hvad nu?

har haft prøvet at slå trace fra. men det hjælper heller ikke??
Avatar billede ivan_flaendsdal Nybegynder
12. april 2008 - 11:30 #3
øø og det er til download.
Avatar billede mcnovy Nybegynder
12. april 2008 - 11:35 #4
ja... som jeg skrev (og spurgte) om det var så en bruger blev sendt over til filen, for at skulle downloade den, eller om det var et forsøg i at prøve at læse filen...
Avatar billede mcnovy Nybegynder
12. april 2008 - 12:36 #5
hvis du kun vil have hans browser til at læse filen, så ta' et kig på dette link
http://www.vbforums.com/showthread.php?t=412067

det er vb..

men skal hans browser, læse filen, eller gemme den..?
Avatar billede ivan_flaendsdal Nybegynder
13. april 2008 - 10:05 #6
Han skal kunne gemme filen.

Det er et system der samler data op fra nogle ekster måler. og bruger skal kunne læse file ned på sin HD, så han har mulighed for vidre behandlig af data.
Avatar billede ivan_flaendsdal Nybegynder
13. april 2008 - 10:11 #7
den løsning der er beskrevet i http://www.vbforums.com/showthread.php?t=412067 giver den samme fejl som ovenfor...
Avatar billede mcnovy Nybegynder
13. april 2008 - 10:27 #8
hvor ligger du koden henne..?

måden det fungere på hos mig er at brugeren bliver sendt videre til et andet link,
og så ligger ovenstående kode i min page_Load i .cs delen..
Avatar billede sherlock Nybegynder
13. april 2008 - 10:54 #9
Response.ContentType = "text/comma-separated-values";
Avatar billede ivan_flaendsdal Nybegynder
13. april 2008 - 12:45 #10
Koden se sådan her ud nu
Dim fsCurPDFFileStream As System.IO.FileStream
        Dim intPDFFileSize As Integer
        Dim bytaryFileBBuffer() As Byte
        ' Open a new stream to the file.
        fsCurPDFFileStream = New System.IO.FileStream(fullpath, System.IO.FileMode.Open)
        ' Retreive the amount of bytes in the file. 
        intPDFFileSize = Convert.ToInt32(fsCurPDFFileStream.Length)
        ' Read the byte stream into the byte array, then clost the stream.
        ReDim bytaryFileBBuffer(intPDFFileSize)
        fsCurPDFFileStream.Read(bytaryFileBBuffer, 0, intPDFFileSize)
        fsCurPDFFileStream.Close()
        fsCurPDFFileStream = Nothing
        ' Output the byte array from/to this webpage.     
        Response.ContentType = "text/comma-separated-values"
        Response.OutputStream.Write(bytaryFileBBuffer, 0, intPDFFileSize)
        Response.AddHeader("Content-Disposition", "attachment;filename=" & filename)
        Response.Flush()
        Response.Close()

Og koden ligger i Sendfil_Click sub, som er en Button_Click procedure.

filen bliver lavet lige før den sendes....

jeg få stadig fjelne med bla bla Details: Error parsing near 'Time;UL1;UL2;UL3;UL1'."

nogen idé
Avatar billede mcnovy Nybegynder
13. april 2008 - 13:08 #11
tror sherlocks forslag skal forståes sådan her
Response.ContentType = "text/comma-separated-values"
Response.Redirect("filnavn.csv")

og ikke i sammenhæng med mit forslag..

jeg har ikke set de fejl der før, og har ikke nogen erfaring med AJAX,
så kan desværre ikke lige hjælpe dig her..
Avatar billede ivan_flaendsdal Nybegynder
13. april 2008 - 15:17 #12
Det hjælper nada... den laver den stadig om til XLS...

suk
Avatar billede mikalj Nybegynder
15. april 2008 - 12:20 #13
1)
Bliver det rent faktisk en xls fil eller går du bare ud fra det fordi den bliver åbnet i excel.
Der er ingen logisk grund til at serveren skulle omdøbe, eller konvertere filer du sender til browseren. Hvis den bliver lavet om, kan det eventuelt være et httpmodule eller httpfilter der gør noget (hvis det er på en server som andre også udvikler på)

2)
Response.ContentType = "text/comma-separated-values"
Response.Redirect("filnavn.csv")
giver desuden ingen mening.
Response.ContentType sætte contenttype på de nuværende request objekt.
Response.Redirect sender svar (på det nuværende request) tilbage til browseren, og beder den sende et nyt request til den angivne sti.

3)
"text/comma-separated-values" som contenttype er udgået, browsers understøtter det sikkert stadig, men bruge den nyere "text/csv" istedet

4)
ville et direkt link til filen ikke virke lige så godt. Eller er der andre grunde til at ikke lave et. f.eks. at skjule din fil struktur eller undgå deep links?

5) nu er det her C#, men du kan sikkert oversætte det til VB
Response.WriteFile(fullpath);
Response.ContentType = "text/csv";
Response.AddHeader("Content-Disposition", "attachment;filename=" + filename)
Response.End();

6)
Ligger knappen som der bliver trykket på inde i et UpdatePanel skal du tilføje en PostbackTrigger til panelet med en reference til knappen (således at der bliver lavet et fuldt postback og ikke kun updatepanelet der bliver opdateret. Det javascript som håndterer updatepanelet vil jo selvfølgelig ikke kunne bruge den csv fil du sender til noget)
Avatar billede ivan_flaendsdal Nybegynder
15. april 2008 - 18:17 #14
ok vi er nok inden på noget unden punkt 5 og 6...

Men her desvære ikke helt chek på postbacktrigger. men det må jeg lige kigge....
Avatar billede ivan_flaendsdal Nybegynder
16. april 2008 - 14:00 #15
jeps det køre nu,
tak mikalj
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