2016-04-28 1 views
1

Я хочу создать файл Excel динамически на C#, и мне нужно сделать его загружаемым в HTML-кнопку AngularJS Click.Преобразование Excel в поток памяти и загрузка через AngularJS

я сослался на ссылку, чтобы создать Excel динамически http://www.increvcorp.com/manipulating-excel-spreadsheet-using-c/

Это работает нормально. Но он сохраняет файл в локальном хранилище

xlWorkBook.SaveAs("D:\\Mobile_List.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 

я говорил еще один пост, они дали идею обращенные непосредственно из книги в поток памяти - Convert excel workbook to byte[].

Но, на этом посту они использовали

MemoryStream m = new MemoryStream(); 
workbook.SaveToStream(m); 

Я не могу в состоянии найти способ SaveToStream в моей книге, это показывает ошибку

«Microsoft.Office.Interop. Excel.Workbook 'не содержит определения для' SaveToStream 'и не использует метод расширения' SaveToStream ' , принимающий первый аргумент типа ' Microsoft.Office.Interop.Excel.Workbook 'можно найти (вы отсутствует директива по использованию или ссылка на сборку?)

Как я могу сделать это как поток памяти и отправить его обратно в AngularJS для загрузки, нажав кнопку HTML?

Я сослался еще на AngularJS $http-post - convert binary to excel file and download - он объяснил только часть angularJS и PHP. Объяснений для C# нет, это основная причина, по которой я задаю этот вопрос.

Просьба помочь мне ...

Примечание: Не превратить его из локального хранилища ...

ответ

0

Если объект книги не может быть преобразован в массив байтов, вы можете работать с файл, сохраненный на жестком диске:

var byteArray = File.ReadAllBytes("PathToSavedWorkBook"); 
using(var ms = new MemoryStream(byteArray)) 
{ 
    //Use your memorystream 
} 

Если вы хотите ByteArray, хотя, первая линия достаточно

EDIT:

Согласно документации класса, который вы используете: https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.aspx

Кажется, что это не возможно, чтобы не сохранить книгу в файле

+0

Как конвертировать без сохранения его в местный? пожалуйста, дайте мне идею ... –

+0

Вы можете попробовать и сохранить книгу с помощью [Workbook.SaveCopyAs] (https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook. savecopyas.aspx) во временной папке с меткой времени, прикрепленной к ее имени файла, а затем снова прочитайте ее с помощью метода @ Sidewinder94. – rinukkusu

Смежные вопросы