Сохраните документ, сгенерированный JavaScript

Assembly assembly = Assembly.LoadFile(Path.GetFullPath("ConsoleApplication1.exe"));
Module manifestModule = assembly.ManifestModule;
PortableExecutableKinds peKind;
ImageFileMachine machine;
manifestModule.GetPEKind(out peKind, out machine);

целевая машина должна тогда быть в машине.

Это будет только работать с блоками.NET все же.

12
задан OscarRyz 25 September 2009 в 20:16
поделиться

10 ответов

Вот обновленная версия для открытия содержимого таблицы в формате .xls.

<head>
<script>

         document.write("<table id='targetTable'><tr><td>Hola</td><td>Adios</td></tr><tr><td>eins</td><td>zwei</td></table>"); 
        function saveAsXLS()
        {
            var xlObj = new ActiveXObject("Excel.Application");
            var xlBook = xlObj.Workbooks.Add();
            var xlSheet = xlBook.Worksheets(1);
            for (var y=0;y<targetTable.rows.length;y++) // targetTable=id of the table
            {
                for (var x=0;x<targetTable.rows(y).cells.length;x++)
                {
                    xlSheet.Cells(y+1,x+1)=targetTable.rows(y).cells(x).innerText;
                }
            }   
            xlObj.Visible=true;
            document.write("The table contents are opened in a new Excel sheet.");//Print on webpage 
        }
</script>
</head>
<body>  
<input type="button" value="Open table in Excel!" onclick="saveAsXLS()"/> 
</body>

Этот код протестирован в IE6 и использует элемент управления ActiveXObject.

  • Таблица, которую я здесь использовал, имеет порядок 2x2 и индивидуальное содержимое отображаются соответственно в лист Excel.
  • В отличие от версии .doc, этот файл не сохраняется в клиентской системе. Он открывает приложение с содержимым таблицы, и клиент должен его сохранить.

Надеюсь, это поможет в ответе на ваш вопрос. Дайте мне знать, если у вас возникнут проблемы.

Мир.

4
ответ дан 2 December 2019 в 07:22
поделиться

Эта ссылка , кажется, объясняет, как именно решить вашу проблему.

5
ответ дан 26 October 2019 в 07:59
поделиться

Поскольку вы используете Ext JS, у вас, вероятно, есть объект Store, который предоставляет данные в сетку ? Вы должны иметь возможность извлекать нужные данные, пройдя через Магазин, а затем отформатировать их так, как вы хотите. Я не думаю, что очистка данных из сгенерированного HTML является идеальным вариантом.

После того, как вы извлечете нужные данные из таблицы и отформатируете их в текст, вы можете отправить их на серверную часть, чтобы начать загрузку (с Content-Disposition : attachment и т. д.)

Если вас не интересует кроссбраузерность, вы также можете использовать схему URL data: для инициирования загрузки без участия серверной части.

0
ответ дан 2 December 2019 в 07:22
поделиться

Является ли ваш javascript AJAX, который извлекает содержимое document.writeln () с сервера, или вы уже генерируете этот контент, когда страница обслуживается пользователем? Потому что, если это первое, я не вижу причин, по которым вы не можете сохранять какие-либо переменные / запросы в сеансе любой серверной технологии, которую вы используете, а затем просто генерировать из них простой текст. В противном случае вам придется последовать предложению путешественника выше.

0
ответ дан 2 December 2019 в 07:22
поделиться

Если он не сохраняется на стороне клиента с помощью Файл -> Сохранить Page Как ... , вам нужно будет сделать именно то, что вы предлагаете, разместить $ ('body'). Html () на своем сервере и обработать его как текст.

7
ответ дан 2 December 2019 в 07:22
поделиться

Я думаю, вы приближаетесь к ответу. Проблема в том, что ' document.open (...) ' может принимать только стандартные mime-типы, такие как 'text / html', 'text / plain' и некоторые другие

И поэтому ваш код должен быть таким:

<script>
    document.write("<div id='content'><table><tr><td>Hola</td><td>Adios</td></tr></table></div>");
    function saveAs(){
        var sMarkup =  document.getElementById('content').innerHTML; 
        var oNewDoc = document.open('text/html');        
        oNewDoc.write( sMarkup + "<hr>" );
        oNewDoc.close();
    }
</script>

<input type="button" value="Save as" onClick="saveAs()"/>

Надеюсь, это поможет.

2
ответ дан 2 December 2019 в 07:22
поделиться

I dont think that sending your html to the server is a tricky solution. You just have to remember to give a link to your user to download this file. This can be done using a traditional POST, or even using AJAX. It depends on how you want your users to interact if your page.

Using traditional post, you could put all the html content in the value attribute of an input type hidden in your page, named "html_content" or something like that, and when the user clicks in the button "save" you send your user to another page with a link do the file. You send the html to server, a script creates a file in a filesystem with an unique name, and returns a download link.

Using AJAX, you just need to do an AJAX POST passing this variable, and then your script returns a download link, and you dynamically put it in your html - without reloading your page, like it was "only cliente side".

Either way, you'll return a link to the resource you just created in your filesystem with a html extension. Remember to generate unique names in your server for each generated file to avoid collisions.

Beware though that using innerHTML in IE 6 (I dont know if this is a IE family behavior or just about the 6 version) uppercases all tags and removes quotes from attributes. If you're planning to do some post processing in your html, be careful.

I dont know how jQuery or other JS libraries behaves in such situations. I would suggest using it though, they have plenty of browser compatibility checks to abstract all these hacks we use.

1
ответ дан 2 December 2019 в 07:22
поделиться

В зависимости от требований к поддержке вашего браузера вы можете использовать URI данных

Core для подтверждения концепции (протестировано в Firefox 3.5.3):

document.write("<div id='content'><table><tr><td>Hola</td><td>Adios</td></tr></table></div>");
function extract(){
  return document.getElementById('content').innerHTML; 
}
function dataURI(s){
  return 'data:application/vnd.ms-excel;base64,' + encode64(s);
}
document.write('<a href="' + dataURI(extract()) + '">open</a>');

Я использовал кодировку base 64 / декодировать из онлайн-примеров. Осторожно: тот, который я схватил, содержал кодировку URI перед кодировкой base 64, что на некоторое время меня сбило с толку.

3
ответ дан 2 December 2019 в 07:22
поделиться

Если это просто отчет, вы можете использовать серверный JavaScript для его создания, а затем обслуживать его с любым типом MIME, который вам нужен ...

1
ответ дан 2 December 2019 в 07:22
поделиться

Здесь ' мой код для сохранения сгенерированного содержимого [на стороне клиента] с помощью JavaScript на локальном диске C: в формате MSWord [.doc].

<script>

    document.write("<div id='content'><table><tr><td>Holaa</td><td>Adiosa</td></tr></table></div>"); 
    function saveAs()
        {
            var wordObj=new ActiveXObject("Word.Application");
            var docText;
            var obj;
            var textToWrite = document.getElementById('content').innerHTML;
            if (wordObj != null)
            {
                wordObj.Visible = false;
                wordDoc=wordObj.Documents.Add();
                wordObj.Selection.TypeText(textToWrite);
                wordDoc.SaveAs("C:\\Eureka.doc");
                wordObj.Quit();
                document.write("The content has been written to 'C:\\Eureka.doc'");//Print on webpage 
            }
        }
</script>

<body>

<input type="button" value="Save in C:" onclick="saveAs()"/> 

</body>

Я быстро работал над проблемой ur и придумал этот фрагмент кода. Надеюсь, я правильно понял вашу проблему.

Ограничения в моем коде:

  • Формат файла - .doc, а не .xls.
  • Во-вторых, файл сохраняется в статическом месте, а не в указанном пользователем [может быть оптимизированным].
  • И, код использует ActiveX, и я не проверял работу в серверной среде.

Это необходимо решить в следующих версиях. (:

Мир.

doc, а не .xls.
  • Во-вторых, файл сохраняется в статическом месте, а не в указанном пользователем месте [может быть оптимизировано].
  • И код использует ActiveX, и я не проверял работу на стороне сервера окружающая среда.
  • Эти проблемы необходимо решить в следующих версиях. (:

    Мир.

    doc, а не .xls.
  • Во-вторых, файл сохраняется в статическом месте, а не в указанном пользователем месте [можно оптимизировать].
  • И код использует ActiveX, и я не проверял работу на стороне сервера окружающая среда.
  • Эти проблемы необходимо решить в следующих версиях. (:

    Мир.

    1
    ответ дан 2 December 2019 в 07:22
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: