Создание файла xls или csv из переменной Javascript - PullRequest
3 голосов
/ 22 сентября 2011

У меня есть приложение, которое использует Javascript для выполнения некоторых вычислений, а затем отображает данные, но я бы хотел добавить опцию, чтобы пользователь мог фактически загружать данные в файл CSV или XLS.

Есть ли способ в Javascript (или каком-либо другом методе), чтобы пользователь нажимал кнопку, затем он запрашивал у него имя файла, чтобы сохранить его как, и затем создавал бы разделенный запятыми или Excel таблица

Спасибо!

EDIT:

Спасибо за все предложения всем. Хотел бы я отметить вас всех как ответы, но на данный момент на подъемниках придется сделать это

Ответы [ 6 ]

4 голосов
/ 22 сентября 2011

Нетрудно открыть окно и записать в него CSV. Но я не знаю, каким образом javascript может изменить заголовок Content-Type:. А без этого он не предложит сохранить или открыть.

Для этого вам понадобится помощь сервера. Вы можете отправить данные на сервер в виде переменной формы и заставить сервер отправить их обратно с правильным заголовком Content-type: text/csv, вы также можете захотеть, чтобы заголовок Content-Disposition: дал вашему файлу имя.

1 голос
/ 22 сентября 2011

Вы, конечно, могли бы написать плагин для браузера (элемент управления ActiveX в IE, NPAPI в других) с FireBreath , который бы делал это;Вы должны написать это на C ++.Честно говоря, я согласен с другими, предлагая вместо этого делать это на стороне сервера, но вы можете сделать это с помощью плагина, и это не будет слишком сложным.

1 голос
/ 22 сентября 2011

Если вы хотите сделать это в стиле веб-браузера, это может быть сложно. Но Javascript - хороший язык для этого, но вам нужно будет использовать .hta вместо обычного .html. Создание .hta создает отдельное приложение, как обычное .exe.

Вот то, что вы хотите посмотреть ActiveXObject("Excel.Application")

Чтобы преобразовать html в hta, вот тег

<HTA:APPLICATION
  id="SomeId"
  border="thin"
  borderStyle="normal"
  caption="yes"
  maximizeButton="yes"
  minimizeButton="yes"
  showInTaskbar="yes"
  windowState="yes"
  innerBorder="yes"
  navigable="yes"
  scroll="auto"
  scrollFlat="yes"
  singleinstance="yes"
/>

Для дальнейшего чтения на hta и excel active X

1 голос
/ 22 сентября 2011

Нет, вы не можете создавать и / или сохранять файл напрямую из JavaScript.В некоторых браузерах / платформах (IE / Windows) вы можете создавать и записывать в файл через объект ActiveX:

function WriteToFile()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var s = fso.CreateTextFile("C:\\temp\\Test.txt", true);
s.WriteLine('Hello');
s.Close();
}

Другое решение заключается в использовании клиентского JavaScript (внутри браузера) для вывода данных CSVв отдельное окно (или всплывающее окно) и попросить пользователя скопировать / вставить его в Excel.

1 голос
/ 22 сентября 2011

Да, но вам также потребуется использовать код на стороне сервера. Используйте JavaScript, чтобы создать ссылку на страницу, которая передает данные csv обратно как вложение. Выходные данные сервера должны содержать заголовок content-disposition attachment; filename="fileName.csv".

0 голосов
/ 22 июля 2013

Я думаю, что было бы возможно сделать это (до определенного предела размера) с данными URI

...