C#使用Aspose.Cells導出Excel簡單實現


首先,需要添加引用Aspose.Cells.dll,官網下載地址:http://downloads.aspose.com/cells/net

將DataTable導出Xlsx格式的文件下載(網頁輸出):

復制代碼
 1 /// <summary>
 2 /// 導出Excel表格
 3 /// </summary>
 4 /// <param name="list">數據集合</param>
 5 /// <param name="header">數據表頭</param>
 6 /// <returns></returns>
 7 public void ExportExcel(DataTable dt, string[] header)
 8 {
 9     Workbook wb = new Workbook(FileFormatType.Xlsx);
10     try
11     {
12         Worksheet sheet = wb.Worksheets[0];
13         sheet.Name = "MO上行查詢結果";
14         if (dt.Rows.Count <= 0)
15         {
16             System.Web.HttpContext.Current.Response.Write("<script>alert('沒有檢測到需要導出數據!');</script>");
17             return;
18         }
19         // 為單元格添加樣式
20         Aspose.Cells.Style style = wb.CreateStyle();
21         style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;  //設置居中
22         style.Font.Size = 12;//文字大小
23         style.Font.IsBold = true;//粗體
24         style.HorizontalAlignment = TextAlignmentType.Center;//文字居中
25 
26         int rowIndex = 0;
27         for (int i = 0; i < header.Length; i++)
28         {
29             sheet.Cells[rowIndex, i].PutValue(header[i]);
30             sheet.Cells[rowIndex, i].SetStyle(style);
31             sheet.Cells.SetColumnWidth(i, 20);//設置寬度
32         }
33         for (int i = 0; i < dt.Rows.Count; i++)//遍歷DataTable行
34         {
35             sheet.Cells[i + 1, 0].PutValue(dt.Rows[i]["SENDER"].ToString());
36             sheet.Cells[i + 1, 1].PutValue(dt.Rows[i]["SENDCONTENT"].ToString());
37             sheet.Cells[i + 1, 2].PutValue("");
38             sheet.Cells[i + 1, 3].PutValue(dt.Rows[i]["RECDATE"].ToString());
39             sheet.Cells[i + 1, 4].PutValue(dt.Rows[i]["sn"].ToString());
40         }
41     }
42     catch (Exception e)
43     {
44         System.Web.HttpContext.Current.Response.Write("<script>alert('導出異常:" + e.Message + "!');</script>");
45     }
46     #region 輸出到Excel
47     using (MemoryStream ms = new MemoryStream())
48     {
49 
50         wb.Save(ms, new OoxmlSaveOptions(SaveFormat.Xlsx));//默認支持xls版,需要修改指定版本
51         System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xlsx", DateTime.Now.ToString("yyyyMMddHHmmssfff")));
52         System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
53         System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());
54         wb = null;
55         System.Web.HttpContext.Current.Response.End();
56     }
57     #endregion
58 }
復制代碼

 

Aspose.Cells.dll 下載地址:http://pan.baidu.com/s/1o8TRXDg

 

其它相關參考:

https://my.oschina.net/u/876556/blog/98801

http://www.cnblogs.com/top5/archive/2010/02/16/1668801.html

http://www.cnblogs.com/springyangwc/archive/2011/08/12/2136498.html

 

 

Aspose.Cells組件可以不依賴excel來導入導出excel文件:

 

導入:

public static System.Data.DataTable ReadExcel(String strFileName)
{
Workbook book = new Workbook();
book.Open(strFileName);
Worksheet sheet = book.Worksheets[0];
Cells cells = sheet.Cells;

return cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, true);
}

 

 

 

導出:

private static void Export<T>(IEnumerable<T> data, HttpResponse response)
{
Workbook workbook = new Workbook();
Worksheet sheet = (Worksheet)workbook.Worksheets[0];

PropertyInfo[] ps = typeof(T).GetProperties();
var colIndex = "A";

foreach (var p in ps)
{

sheet.Cells[colIndex + 1].PutValue(p.Name);
int i = 2;
foreach (var d in data)
{
sheet.Cells[colIndex + i].PutValue(p.GetValue(d, null));
i++;
}

colIndex = ((char)(colIndex[0] + 1)).ToString();
}

response.Clear();
response.Buffer = true;
response.Charset = "utf-8";
response.AppendHeader("Content-Disposition", "attachment;filename=xxx.xls");
response.ContentEncoding = System.Text.Encoding.UTF8;
response.ContentType = "application/ms-excel";
response.BinaryWrite(workbook.SaveToStream().ToArray());
response.End();
}

 

非常簡單,好用!
————————————————
版權聲明:本文為CSDN博主「weiky626」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weiky626/article/details/7514637

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM