市面上其實有很多excel服務期軟體,主要是分為免費的和收費的,好的軟體會幫助“表哥”“表姐”免踩坑。
免費的我推薦NPOL(引數後面分享給大家)、SpreadJS線上表格編輯器,這兩個都是公開原始碼的。
收費的我推薦. net平臺的Spread Studio、純前端Spread the Services
如果是著重於做報表系統的,老許推薦用帆軟的finereport。不僅容易上手,而且一個模板可以多用!
NPOL引數如下:
以DataTable型別為引數傳入
/// <summary>
/// 匯出
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public string TableToExcel(DataTable dt)
{
string urlPath = string.Empty;
try
//下載檔名稱
string fileName = "匯出" + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx"; // 檔名稱
urlPath = "upload/download/" + fileName; // 檔案下載的URL地址,供給前臺下載
string filePath = HttpContext.Current.Server.MapPath("\\" + urlPath); // 檔案路徑
// 1.檢測是否存在資料夾,若不存在就建立個資料夾
string directoryName = Path.GetDirectoryName(filePath);
if (!Directory.Exists(directoryName))
Directory.CreateDirectory(directoryName);
}
IWorkbook workbook;
string fileExt = Path.GetExtension(fileName).ToLower();
if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; }
if (workbook == null) { return "-0"; }
//sheet名稱
ISheet sheet = workbook.CreateSheet("匯出資訊");
//表頭
IRow row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue("column1");
row.CreateCell(1).SetCellValue("column2");
row.CreateCell(2).SetCellValue("column3");
row.CreateCell(3).SetCellValue("column4");
row.CreateCell(4).SetCellValue("column5");
//資料
for (int i = 0; i < dt.Rows.Count; i++)
IRow row1 = sheet.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
ICell cell = row1.CreateCell(j);
cell.SetCellValue(dt.Rows[i][j].ToString() == "" ? "-" : dt.Rows[i][j].ToString());
// 4.生成檔案
FileStream filestr = new FileStream(filePath, FileMode.Create);
workbook.Write(filestr);
filestr.Close();
// 5.返回下載路徑
catch (Exception ex)
throw ex;
return urlPath;
市面上其實有很多excel服務期軟體,主要是分為免費的和收費的,好的軟體會幫助“表哥”“表姐”免踩坑。
免費的我推薦NPOL(引數後面分享給大家)、SpreadJS線上表格編輯器,這兩個都是公開原始碼的。
收費的我推薦. net平臺的Spread Studio、純前端Spread the Services
如果是著重於做報表系統的,老許推薦用帆軟的finereport。不僅容易上手,而且一個模板可以多用!
NPOL引數如下:
以DataTable型別為引數傳入
/// <summary>
/// 匯出
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public string TableToExcel(DataTable dt)
{
string urlPath = string.Empty;
try
{
//下載檔名稱
string fileName = "匯出" + "-" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx"; // 檔名稱
urlPath = "upload/download/" + fileName; // 檔案下載的URL地址,供給前臺下載
string filePath = HttpContext.Current.Server.MapPath("\\" + urlPath); // 檔案路徑
// 1.檢測是否存在資料夾,若不存在就建立個資料夾
string directoryName = Path.GetDirectoryName(filePath);
if (!Directory.Exists(directoryName))
{
Directory.CreateDirectory(directoryName);
}
IWorkbook workbook;
string fileExt = Path.GetExtension(fileName).ToLower();
if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(); } else { workbook = null; }
if (workbook == null) { return "-0"; }
//sheet名稱
ISheet sheet = workbook.CreateSheet("匯出資訊");
//表頭
IRow row = sheet.CreateRow(0);
row.CreateCell(0).SetCellValue("column1");
row.CreateCell(1).SetCellValue("column2");
row.CreateCell(2).SetCellValue("column3");
row.CreateCell(3).SetCellValue("column4");
row.CreateCell(4).SetCellValue("column5");
//資料
for (int i = 0; i < dt.Rows.Count; i++)
{
IRow row1 = sheet.CreateRow(i + 1);
for (int j = 0; j < dt.Columns.Count; j++)
{
ICell cell = row1.CreateCell(j);
cell.SetCellValue(dt.Rows[i][j].ToString() == "" ? "-" : dt.Rows[i][j].ToString());
}
}
// 4.生成檔案
FileStream filestr = new FileStream(filePath, FileMode.Create);
workbook.Write(filestr);
filestr.Close();
// 5.返回下載路徑
}
catch (Exception ex)
{
throw ex;
}
return urlPath;
}