1.前言:
EPPlus是一個可以在Server-side產生Microsoft Excel 2007格式的檔案,為LGPL license的開放原始碼的函式庫。
2.說明:
使用EPPlus作為伺服器端產生Excel檔案的好處是在伺服器上無需安裝Office,動態叫用EPPlus的方法產生Excel檔案,提供網頁下載Excel報表。
EPPlus的說明可參考:
http://en.wikipedia.org/wiki/ExcelPackage
EPPlus軟體下載網址:
http://epplus.codeplex.com/
本範例使用版本為EPPlus 3.1.3
軟體解壓縮後,將\EPPlus 3.1.3\EPPlus.dll的DLL檔複製到自己專案的bin目錄下
加入參考: EPPlus.dll
加入命名空間:
using OfficeOpenXml;
程式碼:
//範例一,簡單產生Excel檔案的方法
private void CreateExcelFile()
{
System.IO.FileInfo filePath = new System.IO.FileInfo(@"d:\tmp\c.xlsx");
if (!System.IO.File.Exists(filePath.ToString()))
{
ExcelPackage ep = new ExcelPackage(filePath);
ExcelWorksheet ws = ep.Workbook.Worksheets.Add("Class");
ws.Cells[1, 1].Value = "name";
ws.Cells[1, 2].Value = "score";
ws.Cells[2, 1].Value = "abey";
ws.Cells[3, 1].Value = "tina";
ws.Cells[4, 1].Value = "boi";
ws.Cells[5, 1].Value = "hebe";
ws.Cells[6, 1].Value = "paul";
ws.Cells[2, 2].Value = "85";
ws.Cells[3, 2].Value = "82";
ws.Cells[4, 2].Value = "84";
ws.Cells[5, 2].Value = "86";
ws.Cells[6, 2].Value = "82";
ep.Save();
}
}
//範例二,DataTable轉成Excel檔案的方法
private void DataTableToExcelFile(DataTable dt, System.IO.FileInfo filePath)
{
if (!System.IO.File.Exists(filePath.ToString()))
{
ExcelPackage ep = new ExcelPackage(filePath);
ExcelWorksheet ws;
if (dt.TableName != string.Empty)
{
ws = ep.Workbook.Worksheets.Add(dt.TableName);
}
else
{
ws = ep.Workbook.Worksheets.Add("Sheet1");
}
for (int i = 0; i < dt.Columns.Count; i++)
{
ws.Cells[1, i + 1].Value = dt.Columns[i].ColumnName;
}
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
ws.Cells[i + 2, j + 1].Value = dt.Rows[i][j].ToString();
}
}
ws.Cells[1, 1, dt.Rows.Count + 2, dt.Columns.Count + 1].Style.ShrinkToFit = true;
ws.Cells[1, 1, dt.Rows.Count + 2, dt.Columns.Count + 1].Style.Font.Size = 8;
ep.Save();
}
}
//範例三,DataTable轉成Excel檔案的方法
private void DataTableToExcelFile(DataTable dt, System.IO.FileInfo filePath, string startAddress)
{
if (!System.IO.File.Exists(filePath.ToString()))
{
ExcelPackage ep = new ExcelPackage(filePath);
ExcelWorksheet ws;
if (dt.TableName != string.Empty)
{
ws = ep.Workbook.Worksheets.Add(dt.TableName);
}
else
{
ws = ep.Workbook.Worksheets.Add("Sheet1");
}
ws.Cells[startAddress].LoadFromDataTable(dt, true, OfficeOpenXml.Table.TableStyles.Custom);
ep.Save();
}
}
3.應用:
//範例一 CreateExcelFile(); //範例二 DataTable dt = TxtConvertToDataTable(@"d:\tmp\ciexyz.csv", "data", ","); System.IO.FileInfo filePath = new System.IO.FileInfo(@"d:\tmp\c.xlsx"); DataTableToExcelFile(dt, filePath); //範例三 DataTable dt = TxtConvertToDataTable(@"d:\tmp\ciexyz.csv", "data", ","); System.IO.FileInfo filePath = new System.IO.FileInfo(@"d:\tmp\c.xlsx"); DataTableToExcelFile(dt, filePath, "B2");
文章標籤
全站熱搜

C# 與 Excel (4) - 隱藏儲存格 接著來介紹一下如何隱藏儲存格 第一種方式 : 針對特定(一或多)行/列隱藏 // 隱藏A行 Range rangeColumnA = (Range)ExcelSheet.Columns["A",System.Type.Missing]; rangeColumnA.Hidden = true; // 隱藏C~D行 Range rangeColumnCtoD = (Range)ExcelSheet.Columns["C:D", System.Type.Missing]; rangeColumnCtoD.Hidden = true; // 隱藏第3列 Range rangeRow3 = (Range)ExcelSheet.Rows[3, System.Type.Missing]; rangeRow3.Hidden = true; // 隱藏第5~7列 Range rangeRow5to7 = (Range)ExcelSheet.Rows["5:7", System.Type.Missing]; rangeRow5to7.Hidden = true; 第二種方式 : 針對特定範圍, 選擇隱藏其範圍的行或列 // 設定 A1 ~ D4 範圍 Range rangeA1toD4 = ExcelSheet.get_Range("A1", "D4"); // 針對行隱藏 : A~D行就會被隱藏 rangeA1toD4.Columns.Hidden = true; // 針對列隱藏 : 1~4列就會被隱藏 rangeA1toD4.Rows.Hidden = true; 這邊要注意一件事 : 就是隱藏儲存格之後, 不能再針對這些隱藏的行/列調整欄寬或列高(包含自動欄寬) 因為 Excel 的隱藏儲存格只是將這些儲存格的欄寬(列高)設為 0 如果調整了這些儲存格的欄寬(列高) 那這些儲存格就又會再度『出現』了 張貼者: Bobby 於 下午12:42 標籤: C#