public void ToExcel(DataTable dt)//From:www.uzhanbao.com
{
#region 3s
var FilePath = @"D:\ToExcel\";//產生Excel文件路徑
DeleteFile(FilePath);
//創建全新的Workbook
var workbook = new HSSFWorkbook();//一個sheet最多65536行
var count = 0;
for (double i = 0; i < Convert.ToDouble(dt.Rows.Count) / Convert.ToDouble(65534); i++)//每個Excel文件的一個頁籤只能存放65536行數據
{
var row_index = 0;
//創建Sheet
workbook.CreateSheet("Sheet" + i);
//根據Sheet名字獲得Sheet對象
var sheet = workbook.GetSheet("Sheet" + i);
IRow row;
row = sheet.CreateRow(row_index);
//寫入標題
for (int j = 0; j < dt.Columns.Count; j++)
{
row.CreateCell(j).SetCellValue(dt.Columns[j].Caption.ToString());
}
row = sheet.CreateRow(++row_index);
//寫入數據
for (int j = 0; j < (dt.Rows.Count - count > 65534 ? 65534 : dt.Rows.Count - count); j++)
{
var r = dt.Rows[j + count];
for (int k = 0; k <dt.Columns.Count; k++)
{
row.CreateCell(k).SetCellValue(r[k].ToString());
//如果是數字,判斷是否需要轉換爲數字
//if (IsNumeric(r[k].ToString()))
//{
// row.CreateCell(k).SetCellValue(Convert.ToDouble(r[k].ToString()));
//}
//else
//{
// row.CreateCell(k).SetCellValue(r[k].ToString());
//}
}
row = sheet.CreateRow(++row_index);
}
count += row_index - 2;
}
//保存Workbook方式一: 以文件形式保存到服務器中(每次導出都會生成一個文件,慎重使用)
var FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
var sw = File.Create(FilePath + FileName);
workbook.Write(sw);
sw.Close();
var EC = new ExcelConverter();
EC.WebopenExcel(Response, FilePath + FileName);
#endregion
}