2012-04-07 6 views
3

Мне нужно создать файл excel для пользователя, нажав кнопку щелчка. Я использовал Netoffice, перед которым отлично работала для настольных приложений. Но теперь я хочу сделать то же самое с приложением asp.net. Таким образом, у моего кода сервера нет доступа к копии Excel. Какой подход я должен принять?Создать книгу Excel в asp.net

+0

Выглядит очень похоже http://stackoverflow.com/questions/150339/generating-an-excel-file-in-asp-net – Mathias

ответ

7

Использование EPPlus. Он позволяет создавать таблицы Excel на сервере. Я использовал его, и он отлично работал. Он поддерживает расширенные функции.

using (ExcelPackage pck = new ExcelPackage()) 
{ 
    //Create the worksheet 
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo"); 

    //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1 
    ws.Cells["A1"].LoadFromDataTable(tbl, true); 

    //Format the header for column 1-3 
    using (ExcelRange rng = ws.Cells["A1:C1"]) 
    { 
     rng.Style.Font.Bold = true; 
     rng.Style.Fill.PatternType = ExcelFillStyle.Solid; 

     //Set Pattern for the background to Solid 
     rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); 

     //Set color to dark blue 
     rng.Style.Font.Color.SetColor(Color.White); 
    } 

    //Example how to Format Column 1 as numeric 
    using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1]) 
    { 
     col.Style.Numberformat.Format = "#,##0.00"; 
     col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right; 
    } 

    //Write it back to the client 
    Response.Clear(); 
    Response.AddHeader("content-disposition", "attachment; filename=file.xlsx"); 
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";      
    Response.BinaryWrite(pck.GetAsByteArray()); 
    Response.End(); 
} 
+0

Выглядит круто. Хотя я не могу найти пример о том, как создать книгу и загрузить ее клиенту без сохранения на сервер? Вы знаете простой способ сделать это? – user194076

+0

Я добавил код, который показывает создание книги с электронной таблицей и ее запись клиенту. –

+0

Большое вам спасибо! – user194076

0

Вы можете попробовать простую таблицу HTML (inlcude html, head и body tags). Просто сохраните его с расширением XLS.


enter image description here

+0

Нет, мне нужен какой-то комплекс первенствует манипуляций. netoffice будет работать отлично, но я не понимаю, почему он не может работать с asp.net. – user194076

3

Наиболее гибким и, вероятно, делать именно то, что вам нужно будет взять какую-то работу, но это бесплатно - и действительно работает. Используйте инструментарий для просмотра существующих документов, чтобы узнать, как создавать нужные функции.

Open XML 2.0 SDK

0

Netoffice требует, чтобы MS Office выполнял машину. У вашего сервера есть это?

0

Вы можете использовать DataGrid для создания файлов Excel на лету. Это не требует Excel.

public static void ExportDataSetToExcel(DataSet ds, string filename) 
{ 
    HttpResponse response = HttpContext.Current.Response; 

    // first let's clean up the response.object 
    response.Clear(); 
    response.Charset = ""; 

    // set the response mime type for excel 
    response.ContentType = "application/vnd.ms-excel"; 
    response.AddHeader(
     "Content-Disposition", 
     "attachment;filename=\"" + filename + "\"" 
    ); 

    // create a string writer 
    using (StringWriter sw = new StringWriter()) 
    { 
     using (HtmlTextWriter htw = new HtmlTextWriter(sw)) 
     { 
      // instantiate a datagrid 
      DataGrid dg = new DataGrid(); 
      dg.DataSource = ds.Tables[0]; 
      dg.DataBind(); 
      dg.RenderControl(htw); 
      response.Write(sw.ToString()); 
      dg.Dispose(); 
      ds.Dispose(); 
      response.End(); 
     } 
    } 
} 
+0

Это решение возвращает ** HTML ** клиенту, но заявляет, что это фактически файл ** Excel **. Проблема заключается в том, что Excel находится на вашем маленьком обмане и выдает предупреждение пользователю, объясняющему, что кто-то пытается лгать им. –

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