1. 程式人生 > >簡單匯出下載excel的方法

簡單匯出下載excel的方法

簡單匯出excel方法
/// <summary>
/// Excel打包下載
/// </summary>
/// <returns></returns>
[HttpGet]
public FileResult Export()
{
//Excel表格 儲存路徑
string path = Server.MapPath(string.Format("/Template/{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssffff")));
//獲取要匯出的資料
System.Data.DataTable dt = new System.Data.DataTable();
SqlConnection con = new SqlConnection("Data Source=LENOVO-PC;Initial Catalog=cs;Integrated Security=True");
SqlDataAdapter dap = new SqlDataAdapter("select * from [table]",con);
dap.Fill(dt);

////刪除表中不需要匯出的列
//dt.Columns.Remove("ComId");//歷史記錄id
//dt.Columns.Remove("UserId");//使用者id

//修改列名
dt.Columns["id"].ColumnName = "協會名稱";
dt.Columns["name"].ColumnName = "地址";

HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = string.IsNullOrEmpty(dt.TableName) ? workbook.CreateSheet("Sheet1") : workbook.CreateSheet(dt.TableName);//建立工作表

#region 標題
IRow row = sheet.CreateRow(0);//在工作表中新增一行
for (int i = 0; i < dt.Columns.Count; i++)
{
NPOI.SS.UserModel.ICell cell = row.CreateCell(i);//在行中新增一列
sheet.SetColumnWidth(i, 10 * 512);
cell.SetCellValue(dt.Columns[i].ColumnName);//設定列的內容
}
#endregion
#region 填充資料
for (int i = 1; i <= dt.Rows.Count; i++)//遍歷DataTable行
{
DataRow dataRow = dt.Rows[i - 1];
row = sheet.CreateRow(i);//在工作表中新增一行
for (int j = 0; j < dt.Columns.Count; j++)//遍歷DataTable列
{
NPOI.SS.UserModel.ICell cell = row.CreateCell(j);//在行中新增一列
cell.SetCellValue(dataRow[j].ToString());//設定列的內容
}
}
#endregion
#region 輸出到Excel
MemoryStream ms = new MemoryStream();
workbook.Write(ms);
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
byte[] bArr = ms.ToArray();
fs.Write(bArr, 0, bArr.Length);
fs.Flush();
}
#endregion
return File(path, "application/octet-stream", string.Format("本協會通訊錄資訊{0}項重點工作.xls", dt.Rows.Count));
}