實作DataTable轉為Excel檔案,和上次分享的Excel檔案轉為DataTable互為反操作,DataTable轉化為Excel檔案是通過傳入一個DataTable型別的引數,然后將傳入的DataTable轉化為Excel檔案,實作關鍵代碼如下:
public void ToExcel(DataTable dt) { #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 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/51437.html
標籤:其他
上一篇:讓輕音樂為你減輕的敲代碼疲勞
下一篇:如何在除錯狀態下部署局域網網站
