C#把DataTable導(dǎo)出為Excel文件
實(shí)現(xiàn)DataTable轉(zhuǎn)為Excel文件,和上次分享的Excel文件轉(zhuǎn)為DataTable互為反操作。DataTable轉(zhuǎn)化為Excel文件是通過傳入一個DataTable類型的參數(shù),然后將傳入的DataTable轉(zhuǎn)化為Excel文件。實(shí)現(xiàn)關(guān)鍵代碼如下:
方法一:
/// <summary> /// DataTable數(shù)據(jù)導(dǎo)出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(); //創(chuàng)建工作簿 Worksheet sheet = book.Worksheets[0]; //創(chuàng)建工作表 Cells cells = sheet.Cells; //單元格 //創(chuàng)建樣式 Aspose.Cells.Style style = book.Styles[book.Styles.Add()]; style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應(yīng)用邊界線 左邊界線 style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應(yīng)用邊界線 右邊界線 style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應(yīng)用邊界線 上邊界線 style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //應(yīng)用邊界線 下邊界線 style.HorizontalAlignment = TextAlignmentType.Center; //單元格內(nèi)容的水平對齊方式文字居中 style.Font.Name = "宋體"; //字體 style1.Font.IsBold = true; //設(shè)置粗體 style.Font.Size = 11; //設(shè)置字體大小 //style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色 //style.Pattern = Aspose.Cells.BackgroundType.Solid; //背景樣式 //style.IsTextWrapped = true; //單元格內(nèi)容自動換行 //表格填充數(shù)據(jù) int Colnum = data.Columns.Count;//表格列數(shù) int Rownum = data.Rows.Count;//表格行數(shù) //生成行 列名行 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); //自定義高 } //生成數(shù)據(jù)行 for (int i = 0; i < Rownum; i++) { for (int k = 0; k < Colnum; k++) { cells[1 + i, k].PutValue(data.Rows[i][k].ToString()); //添加數(shù)據(jù) cells[1 + i, k].SetStyle(style); //添加樣式 } cells[1 + i, 5].Formula = "=B" + (2 + i) + "+C" + (2 + i);//給單元格設(shè)置計算公式,計算班級總?cè)藬?shù) } sheet.AutoFitColumns(); //自適應(yīng)寬 book.Save(filepath); //保存 GC.Collect(); } catch (Exception e) { logger.Error("生成excel出錯:" + e.Message); } }
方法二:
public void ToExcel(DataTable dt) { #region 3s var FilePath = @"D:\ToExcel\";//產(chǎn)生Excel文件路徑 DeleteFile(FilePath); //創(chuàng)建全新的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行數(shù)據(jù) { var row_index = 0; //創(chuàng)建Sheet workbook.CreateSheet("Sheet" + i); //根據(jù)Sheet名字獲得Sheet對象 var sheet = workbook.GetSheet("Sheet" + i); IRow row; row = sheet.CreateRow(row_index); //寫入標(biāo)題 for (int j = 0; j < dt.Columns.Count; j++) { row.CreateCell(j).SetCellValue(dt.Columns[j].Caption.ToString()); } row = sheet.CreateRow(++row_index); //寫入數(shù)據(jù) 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()); //如果是數(shù)字,判斷是否需要轉(zhuǎn)換為數(shù)字 //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方式一: 以文件形式保存到服務(wù)器中(每次導(dǎo)出都會生成一個文件,慎重使用) 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 }
到此這篇關(guān)于C#把DataTable導(dǎo)出為Excel文件的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#如何將DataTable導(dǎo)出到Excel解決方案
- C#操作EXCEL DataTable轉(zhuǎn)換的實(shí)例代碼
- C#將Excel中的數(shù)據(jù)轉(zhuǎn)換成DataSet
- C#實(shí)現(xiàn)將DataTable內(nèi)容輸出到Excel表格的方法
- C#使用Datatable導(dǎo)出Excel
- C#中DataGridView導(dǎo)出Excel的兩種方法
- C#把EXCEL數(shù)據(jù)轉(zhuǎn)換成DataTable
- C#實(shí)現(xiàn)讀取Excel文件并將數(shù)據(jù)寫入數(shù)據(jù)庫和DataTable
- C#中ExcelDataReader的具體使用
相關(guān)文章
C#中LINQ to Objects查詢的實(shí)現(xiàn)
LINQ to Objects是LINQ技術(shù)在C#中的一種應(yīng)用,它專門用于對內(nèi)存中的對象集合進(jìn)行查詢和操作,本文就詳細(xì)的介紹C#中LINQ to Objects查詢的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08C# DateTime與時間戳轉(zhuǎn)換實(shí)例
本篇文章主要介紹了C# DateTime與時間戳轉(zhuǎn)換實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06C#實(shí)現(xiàn)設(shè)置電腦顯示器參數(shù)
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)設(shè)置電腦顯示器參數(shù),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12深入Resource實(shí)現(xiàn)多語言支持的應(yīng)用詳解
本篇文章是對Resource實(shí)現(xiàn)多語言支持的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05