2015-06-01 3 views
1

Я использую Web API 4.5.1. Я генерирую API в коде C# и передаю этот API на передний план, где front-end построен на HTML и AngularJS JavaScript. Мое требование - создать API для экспорта в Excel в интерфейсе. Я как бы застрял здесь. Я получаю запрос от людей с конечным результатом и даты. Исходя из этого, я буду запрашивать базу данных, чтобы получить данные, и если мне удастся, вытащите HTML-формат. Я не могу идти дальше, поскольку я новичок в этом. Ниже приведен код, который я пытаюсь достичь с помощью:Экспорт в Excel в качестве ответа в веб-API

[HttpPost] 
public HttpResponseMessage ExportToExcel(string fromTimeStamp, string toTimeStamp) 
{ 
    DateTime fromDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc); 
    fromDate = fromDate.AddMilliseconds(Convert.ToDouble(fromTimeStamp)).ToLocalTime(); 
    fromDate.AddDays(1); 

    DateTime toDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc); 
    toDate = toDate.AddMilliseconds(Convert.ToDouble(toTimeStamp)).ToLocalTime(); 
    toDate.AddDays(1); 

    var fromDate1 = fromDate.AddDays(1).ToString("yyyy-MM-dd"); 
    var toDate1 = toDate.AddDays(1).ToString("yyyy-MM-dd"); 

    var bal = new AdminBAL(); 
    var ExportData = bal.ExportToExcel(fromDate1, toDate1); 
    //where Exportdata is the html format for the data required. 
    // unable to find the solution here 
} 

Как выполнить эту операцию?

+0

Есть много вопросов о SO, которые помогут вам написать файл Excel и другие, которые объясняют, как отправить файл excel в виде загрузки через веб-API. Ищите их и пытайтесь их объединить, но не ждите от нас, чтобы мы писали код для вас. – BCdotWEB

+1

Простую библиотеку excel можно найти здесь: http://epplus.codeplex.com/ – Stefan

ответ

4

Вы можете попробовать это?

var response = new HttpResponseMessage(System.Net.HttpStatusCode.OK); 
     //If you have Physical file Read the fileStream and use it. 
     response.Content = new StreamContent(fileStream); 
     //OR 
     //Create a file on the fly and get file data as a byte array and send back to client 
     response.Content = new ByteArrayContent(fileBytes);//Use your byte array 
     response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
     response.Content.Headers.ContentDisposition.FileName = fileName;//your file Name- text.xls 
     response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/ms-excel"); 
     //response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
     response.Content.Headers.ContentLength = fileStream.Length; 
     response.StatusCode = System.Net.HttpStatusCode.OK; 

Я получил это хорошо. Пожалуйста, дайте мне знать, если у вас есть какие-либо сомнения по этому поводу.