天天看點

mvc導出excel記錄

前言:

記錄這篇使用記錄,是為了友善以後學習查閱和讓沒有使用過的人了解一下,其中不足還請見諒。不是很全的文章,大神請繞行。

在項目中我們或多或少的會遇到資料導出到excel表格以便線下檢視或者記錄一些需要的資料資訊。我所知道的有兩個EPPlus和NPIO這兩個插件。

NPIO這個恕在下才疏學淺還沒有使用不好多說,今天我就來說一下EPPlus。

EPPlus準備:

EPPlus官網位址:https://github.com/JanKallman/EPPlus

下載下傳之後,我們在程式添加程式集之後在需要使用的地方添加一下引用:

using OfficeOpenXml;

using OfficeOpenXml.Style;

using System.Drawing;

這幾個隻是最基礎的引用控件,你要使用更多當然需要增加更多命名空間比如圖示,需要在增加using OfficeOpenXml.Drawing.Chart;

附上EPPlus支援功能清單:

mvc導出excel記錄

好了廢話不多說進入正題。

使用EPPlus:

1.建立存放檔案夾

//建立存放Excel的檔案夾

string path = Server.MapPath("~/Upload/Excel/MenuInfor/");

string fileName = DateTime.Now.ToString("yyyyMMddHHmmssffffff") + ".xlsx";

pathFileName = path + fileName;

//如果上傳目錄不存在就建立

//如果上傳目錄不存在就建立
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }

        FileInfo newFile = new FileInfo(pathFileName);
        if (newFile.Exists)
        {
            newFile.Delete();
            newFile = new FileInfo(pathFileName);
        }      

2.建立工作簿

有了存放位置之後就是建立真正的excel檔案了,注意這裡用到using哦,這是必須的哦。建立工作薄并存入上面所說的位置

using (ExcelPackage package = new ExcelPackage(newFile))

{

//這裡面是excel所有的操作

3.建立Sheet表格

也就是我們所說的頁籤,這裡才是我們存放資料的展現層。

ExcelWorksheet workSheet = package.Workbook.Worksheets.Add("這裡是頁籤名稱");

4.開始填充

#region 添加表頭
/*添加表頭*/
workSheet.InsertRow(1, 1);
using (var range = workSheet.Cells[1, 1, 1, 4])
{
range.Merge = true;
range.Style.Font.SetFromFont(new Font("Britannic Bold", 18, FontStyle.Regular));
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.CenterContinuous;
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(184, 204, 228));
range.Style.Font.Color.SetColor(Color.Black);
range.Value = "菜單導出資訊";
}
#endregion

#region 設定列寬
//設定列寬
workSheet.Column(1).Width = 30;
workSheet.Column(2).Width = 30;
workSheet.Column(3).Width = 30;
workSheet.Column(4).Width = 20;
#endregion
#region 設定标題
/*設定标題*/
workSheet.Cells[2, 1].Value = "菜名";
workSheet.Cells[2, 2].Value = "材料名稱";
workSheet.Cells[2, 3].Value = "材料類别";
workSheet.Cells[2, 4].Value = "材料所需克數";
#endregion

using (var range = workSheet.Cells[2, 1, 2, 4])
{
range.Style.Font.Bold = true;
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
range.Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(70, 130, 180));
range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(70, 130, 180));
range.Style.Font.Color.SetColor(Color.White);
//range.AutoFilter = true;
}

#region 設定單元格内容
/*設定單元格内容*/
int row = 3;
foreach (FoodMenuInfor item in foodInforList)
{
var biginRow = row;
var menuDataList = menuData.Where(u => u.menuId == item.id);
//對名稱進行查詢
if (!string.IsNullOrEmpty(stuffName))
{
menuDataList = menuDataList.Where(a => a.stuffName.Contains(stuffName));

}
//對類别進行查詢
if (!string.IsNullOrEmpty(stuffType))
{
menuDataList = menuDataList.Where(a => a.stuffType == stuffType);
}
menuDataList.OrderByDescending(b => b.addTime);
foreach (var loop in menuDataList)
{
workSheet.Cells[row, 1].Value = "";
workSheet.Cells[row, 2].Value = loop.stuffName;
workSheet.Cells[row, 3].Value = loop.stuffType;
workSheet.Cells[row, 4].Value = loop.requireNum;
row++;
}
if (menuDataList.Count() == 0)
{
workSheet.Cells[row, 1].Value = "";
workSheet.Cells[row, 2].Value = "";
workSheet.Cells[row, 3].Value = "";
workSheet.Cells[row, 4].Value = "";
row++;
}
//合并園區行頭
workSheet.Cells[biginRow, 1, row - 1, 1].Merge = true;
workSheet.Cells[biginRow, 1, row - 1, 1].Value = item.menuName;
}
#endregion      

5.終于内容寫完了

内容添加完了,我就稍微設定了下文字水準居中和垂直居中,最後進行儲存

workSheet.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//水準居中

workSheet.Cells.Style.VerticalAlignment = ExcelVerticalAlignment.Center;//垂直居中

package.Save();

最後上一下結果。

mvc導出excel記錄

資料借鑒:

Wico's Blog大神: http://www.mamicode.com/info-detail-63790.html

下面是pengtan大神使用NPOI和EPPlus的對比:http://www.cnblogs.com/tanpeng/p/6155749.html

使用那個全憑自己喜好吧,對比自己了解就好。

作者:

YanBigFeg

——

顔秉鋒

出處:

http://www.cnblogs.com/yanbigfeg

本文版權歸作者和部落格園共有,歡迎轉載,轉載請标明出處。如果您覺得本篇博文對您有所收獲,覺得小弟還算用心,請點選右下角的 [推薦],謝謝!