Avatar billede sluppermanden Nybegynder
09. juni 2006 - 14:47 Der er 1 kommentar og
1 løsning

Gemme CSV fil hos client.

Hej,

Jeg vil gerne gemme min nogle data i csv fil hos clienten.
Jeg har lavet et lille program til at test funktionaliteten.
Man kan enten bruge nogle felter eller et text felt til at definere sin csv.
Det der bliver skrevet til filen bliver vist i en iframe når man trykker på knappen

Men der er selvfølgelig et enkelt problem.
Det virker fint med at gemme.
Men når jeg åbne filen i excel bagefter, registre den ikke mine ";" som at den skal skifte celle.
Hvis jeg laver en tom fil og kopiere indholdet af den anden fil over i, igennem feks. notepad. Så virker min fil nr.2 selv om indholdet er præcis det samme.

Har i nogle god bud på hvorfor min CSV fil ikke virke i mit oprindelige format ?

Jeg har lagt min test side med, så kan i selv prøve det.

<html>

<head>
    <title>Save to excel</title>
    <script type="text/javascript">
        function saveFile()
        {
            var outputstring =                    window.f00.value + '\u003B' +
                                window.f10.value + '\u003B' +
                                window.f20.value + '\u003B' +
                                window.f30.value + '\u003B' +
                                window.f40.value + '\u000D' +
                                window.f01.value + '\u003B' +
                                window.f11.value + "\u003B" +
                                window.f21.value + "\u003B" +
                                window.f31.value + "\u003B" +
                                window.f41.value + "\u000D" +
                                window.f02.value + "\u003B" +
                                window.f12.value + "\u003B" +
                                window.f22.value + "\u003B" +
                                window.f32.value + "\u003B" +
                                window.f42.value;
           
            var csvAreaField = document.getElementById('csvarea');
            var useCSVAreachk = document.getElementById('usecsvarea');
           
            // check if iFrame allready exists, not necessary to create another one
            var w = window.frames.myIFrame;
            if( !w )
            {
                w = document.createElement('iframe');
           
                w.id = 'myIFrame';
                //w.style.display = 'none';
                document.body.insertBefore( w );
                w = window.frames.myIFrame;

                if (!w)
                {
                    alert('Could not create Excel file');
                    return false;
                }
            }
                   
            var d = w.document;
           
            d.open( 'text/csv' );
            d.charset = 'utf-8';
            if( useCSVAreachk.checked )
            {
                d.write( csvAreaField.value );
            }
            else
            {
                d.write( outputstring );
            }
           
            d.close();
           
            d.execCommand( 'saveas' , null , 'RenameExtentionToCSV.csv' );
           
            w.close();
        }
    </script>
</head>

<body>
    Save as a .CSV file to Excel.
    This works only if you follow following procedure:
    <ol>
        <li>Enter text in fields</li>
        <li>Save file as txt file using save button</li>
        <li>when saved, rename the extention to .csv</li>
        <li>Open the file in excel</li>
    </ol>
    <hr>
    <textarea id="csvarea" rows="4" cols="90"></textarea><input type="checkbox" id="usecsvarea">
    <table>
        <tr>
            <td><input type="text" id="f00"></td>
            <td><input type="text" id="f10"></td>
            <td><input type="text" id="f20"></td>
            <td><input type="text" id="f30"></td>
            <td><input type="text" id="f40"></td>
        </tr>
        <tr>
            <td><input type="text" id="f01"></td>
            <td><input type="text" id="f11"></td>
            <td><input type="text" id="f21"></td>
            <td><input type="text" id="f31"></td>
            <td><input type="text" id="f41"></td>
        </tr>
        <tr>
            <td><input type="text" id="f02"></td>
            <td><input type="text" id="f12"></td>
            <td><input type="text" id="f22"></td>
            <td><input type="text" id="f32"></td>
            <td><input type="text" id="f42"></td>
        </tr>
    </table>
    <button type="button" onclick="saveFile()">Save matrix to csv file</button>
    <br>

</body>

</html>
Avatar billede nyp Nybegynder
14. juni 2006 - 14:58 #1
Vist noget med at execCommand 'saveas' gemmer gemmer i utf-16 format (2byte pr karakter)  det kan excel så ikke umiddelbar forstå, du kan dog importere filen i et nyt document.
For et par år siden legede jeg en del med saveas, men fandt ingen løsning og tror ikke der er nogen.
Avatar billede sluppermanden Nybegynder
10. juli 2007 - 10:07 #2
Lukker
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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