利用Aspose.Cells組件分頁導出excel

各版本的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);
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章