91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#怎么把DataTable導出為Excel文件

發布時間:2022-04-11 10:28:30 來源:億速云 閱讀:837 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“C#怎么把DataTable導出為Excel文件”,內容詳細,步驟清晰,細節處理妥當,希望這篇“C#怎么把DataTable導出為Excel文件”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

實現DataTable轉為Excel文件,和上次分享的Excel文件轉為DataTable互為反操作。DataTable轉化為Excel文件是通過傳入一個DataTable類型的參數,然后將傳入的DataTable轉化為Excel文件。實現關鍵代碼如下:

方法一:

/// <summary>
/// DataTable數據導出Excel
/// </summary>
/// <param name="data"></param>
/// <param name="filepath"></param>
public static void DataTableExport(DataTable data, string filepath)
{
    try
    {
        //Workbook book = new Workbook("E:\\test.xlsx"); //打開工作簿
        Workbook book = new Workbook(); //創建工作簿
        Worksheet sheet = book.Worksheets[0]; //創建工作表
        Cells cells = sheet.Cells; //單元格
        //創建樣式
        Aspose.Cells.Style style = book.Styles[book.Styles.Add()];
        style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 左邊界線  
        style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 右邊界線  
        style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 上邊界線  
        style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應用邊界線 下邊界線   
        style.HorizontalAlignment = TextAlignmentType.Center; //單元格內容的水平對齊方式文字居中
        style.Font.Name = "宋體"; //字體
        style1.Font.IsBold = true; //設置粗體
        style.Font.Size = 11; //設置字體大小
        //style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色
        //style.Pattern = Aspose.Cells.BackgroundType.Solid; //背景樣式
        //style.IsTextWrapped = true; //單元格內容自動換行
        
        //表格填充數據
        int Colnum = data.Columns.Count;//表格列數 
        int Rownum = data.Rows.Count;//表格行數 
        //生成行 列名行 
        for (int i = 0; i < Colnum; i++)
        {
            cells[0, i].PutValue(data.Columns[i].ColumnName); //添加表頭
            cells[0, i].SetStyle(style); //添加樣式
            //cells.SetColumnWidth(i, data.Columns[i].ColumnName.Length * 2 + 1.5); //自定義列寬
            //cells.SetRowHeight(0, 30); //自定義高
        }
        //生成數據行 
        for (int i = 0; i < Rownum; i++)
        {
            for (int k = 0; k < Colnum; k++)
            {
                cells[1 + i, k].PutValue(data.Rows[i][k].ToString()); //添加數據
                cells[1 + i, k].SetStyle(style); //添加樣式
            }
            cells[1 + i, 5].Formula = "=B" + (2 + i) + "+C" + (2 + i);//給單元格設置計算公式,計算班級總人數
        }
        sheet.AutoFitColumns(); //自適應寬
        book.Save(filepath); //保存
        GC.Collect();
    }
    catch (Exception e)
    {
        logger.Error("生成excel出錯:" + e.Message);
    }
}

方法二:

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
    }

讀到這里,這篇“C#怎么把DataTable導出為Excel文件”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳山县| 同德县| 安溪县| 万荣县| 石楼县| 兰考县| 林口县| 开阳县| 黄浦区| 怀仁县| 于都县| 盈江县| 乌拉特后旗| 申扎县| 神池县| 吉安市| 庆云县| 大邑县| 广安市| 巴青县| 宜昌市| 卢氏县| 荣成市| 诸城市| 林芝县| 宁明县| 苍山县| 三明市| 肇东市| 湄潭县| 浦北县| 繁昌县| 和静县| 台前县| 象州县| 苗栗县| 襄汾县| 南汇区| 浠水县| 尉犁县| 延长县|