各版本的excel最大可容納行數是不一樣的。
Excel 2003: 65536
Excel 2007及以上版本:1048676
/// </summary> /// <param name="dt"></param> /// <param name="tableName"></param> /// <param name="tableTitle">標題</param> public void OutFileToDisk(DataTable dt, string tableName, string tableTitle) { Workbook workbook = new Workbook(); //工作簿 workbook.Worksheets.Clear(); //爲標題設置樣式 Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增樣式 styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中 styleTitle.Font.Name = "宋體";//文字字體 styleTitle.Font.Size = 18;//文字大小 styleTitle.Font.IsBold = true;//粗體 //樣式2 Style style2 = workbook.Styles[workbook.Styles.Add()];//新增樣式 style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style2.Font.Name = "宋體";//文字字體 style2.Font.Size = 14;//文字大小 style2.Font.IsBold = true;//粗體 style2.IsTextWrapped = true;//單元格內容自動換行 style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //樣式3 Style style3 = workbook.Styles[workbook.Styles.Add()];//新增樣式 style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中 style3.Font.Name = "宋體";//文字字體 style3.Font.Size = 12;//文字大小 style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; int Colnum = dt.Columns.Count;//表格列數 int Rownum = dt.Rows.Count;//表格行數 decimal Rows = Math.Ceiling(Convert.ToDecimal(dt.Rows.Count) / 65535); for (int i = 0; i < Rows; i++) { workbook.Worksheets.Add("頁" + (i + 1).ToString()); } for (int i = 0; i < Rows; i++) { Worksheet sheet = workbook.Worksheets[i]; //工作表 Cells cells = sheet.Cells;//單元格 //生成行1 標題行 cells.Merge(0, 0, 1, Colnum);//合併單元格 cells[0, 0].PutValue(tableName);//填寫內容 cells[0, 0].SetStyle(styleTitle); cells.SetRowHeight(0, 38); //生成行2 列名行 string[] Tile = tableTitle.Split(','); for (int h = 0; h < Colnum; h++) { cells[1, h].PutValue(Tile[h]); cells[1, h].SetStyle(style2); cells.SetRowHeight(1, 25); } //查詢Table分頁 DataTable Ta = dt.AsEnumerable().Skip(i * 65534).Take(65534).CopyToDataTable(); for (int j = 0; j < Ta.Rows.Count; j++) { for (int k = 0; k < Colnum; k++) { cells[2 + j, k].PutValue(Ta.Rows[j][k].ToString()); cells[2 + j, k].SetStyle(style3); } cells.SetRowHeight(2 + j, 24); } } workbook.Save(Application.StartupPath + "\\" + tableName + ".xls", SaveFormat.Excel97To2003); }