C#EPPlus輸出エクセル

A、Excelエクスポートヘルパー

    / * 参考NuGetパッケージEPPlus * / 
    ///  <要約> 
    /// エクセルエクスポートヘルプクラス
     ///  </要約> 
    パブリック クラスExcelExportHelper
    {
        パブリック 静的の 文字列 ExcelContentType => " アプリケーション/ vnd.openxmlformats-officedocument.spreadsheetml.sheet " ///  <要約> 
        /// 一覧转のDataTable
         ///  </要約> 
        ///  <typeparam名= "T"> </ typeparam> 
        ///  <PARAM NAME = "データ"> </ param>の
        / //  <リターン> </リターン> 
        パブリック 静的 DataTableのListToDataTable <T>(リスト<T> データ)
        {
            PropertyDescriptorCollectionプロパティ = TypeDescriptor.GetProperties(typeof演算(T))。
            DataTableのdataTable = 新しいDataTableを();
            以下のためにint型私は= 0 ; I <properties.Countを; I ++ 
            {
                PropertyDescriptorプロパティ = プロパティ[I]。
                dataTable.Columns.Add(property.Name、Nullable.GetUnderlyingType(property.PropertyType) ?? property.PropertyType)。
            }
            オブジェクト []の値= 新しい オブジェクト[properties.Count]。
            foreachの(Tの項目データ)
            {
                以下のためにint型私は= 0 ; I <values.Lengthを; I ++ 
                {
                    値[I] = プロパティ[I]以降.getvalue(アイテム)
                }
                dataTable.Rows.Add(値)。
            }
            返すのdataTableを。
        }

        ///  <要約> 
        /// エクスポートエクセル
         ///  </要約> 
        ///  ます。<param name = "のdataTable"> データソース</ param>の
        ///  <PARAM NAME = "見出し"> ワークブックワークシート< / param>の
        ///  <PARAM NAME = "showSr​​No"> 行番号を表示するかどうか// </ param>の
        ///  <PARAM NAME = "columnsToTakeを"> コラム輸出へ</ param>の
        ///  <リターンA> < /戻り値> 
        パブリック 静的の バイト [] ExportExcel(のdataTableのDataTable、文字列の見出し= "" BOOL showSr​​No = falseがparamsは 、文字列を[] columnsToTake)
        {
            バイト[]結果。
            使用して(ExcelPackageパッケージ= 新しいExcelPackage())
            {
                ワークシートExcelWorksheet = package.Workbook.Worksheets.Add($ " {}データの見出し" );
                 INT startRowFrom = ストリング .IsNullOrEmpty(見出し)?13 ;   // で始まる行
                 // 行番号を表示するかどうかを
                IF (showSr​​No)
                {
                    DataColumnのDataColumn = dataTable.Columns.Add(" "typeof演算int型));
                    dataColumn.SetOrdinal(0 )。
                    int型のインデックス= 1 ;
                    foreachの(のDataRowの項目dataTable.Rows)
                    {
                        項目[ 0 ] = インデックス。
                        インデックス ++ ;
                    }
                }
                // Excelファイルにコンテンツを追加 
                workSheet.Cells [ " A " + startRowFrom] .LoadFromDataTable(のdataTable、真の);
                // 小さいコンテンツを有する細胞の自動調整幅   
                INT = columnIndexに1 foreachの(のDataColumn項目dataTable.Columns)
                {
                    ExcelRange columnCells = workSheet.Cells [workSheet.Dimension.Start.Row、columnIndexに、workSheet.Dimension.End.Row、columnIndexに]。
                    INTのmaxLength = columnCells.Max(セル=> cell.Value.ToString())(COUNT);
                    もし(maxLengthの< 150 
                    {
                        workSheet.Column(columnIndexに).AutoFit();
                    }
                    columnIndexに ++ ;
                }
                // フォーマットヘッダ-ブラックにイエロー、大胆な   
                使用(ExcelRange R = workSheet.Cells [startRowFrom、1 、startRowFrom、dataTable.Columns.Count])
                {
                    r.Style.Font.Color.SetColor(System.Drawing.Color.White)。
                    r.Style.Font.Boldは = ;
                    r.Style.Fill.PatternType = ExcelFillStyle.Solid。
                    r.Style.Fill.BackgroundColor.SetColor(System.Drawing.ColorTranslator.FromHtml(" #の1fb5ad " ));
                }
                // フォーマット細胞-追加境界   
                使用(ExcelRange R = workSheet.Cells [startRowFrom + 11、startRowFrom + dataTable.Rows.Count、dataTable.Columns.Count])
                {
                    r.Style.Border.Top.Style = ExcelBorderStyle.Thin。
                    r.Style.Border.Bottom.Style = ExcelBorderStyle.Thin。
                    r.Style.Border.Left.Style = ExcelBorderStyle.Thin。
                    r.Style.Border.Right.Style = ExcelBorderStyle.Thin。
                    r.Style.Border.Top.Color.SetColor(System.Drawing.Color.Black)。
                    r.Style.Border.Bottom.Color.SetColor(System.Drawing.Color.Black)。
                    r.Style.Border.Left.Color.SetColor(System.Drawing.Color.Black)。
                    r.Style.Border.Right.Color.SetColor(System.Drawing.Color.Black)。
                }
                // 列を無視して除去   
                するためにINT I = dataTable.Columns.Count - 1 ; I> = 0 ; i-- 
                {
                    もし(I == 0 && showSr​​No)
                    {
                        続け;
                    }
                    もし(!columnsToTake.Contains(dataTable.Columns [i]の.ColumnName))
                    {
                        workSheet.DeleteColumn(I + 1 )。
                    }
                }
                もし(!文字列.IsNullOrEmpty(見出し))
                {
                    workSheet.Cells [ " A1 " ] .Valueの= 見出し。
                    workSheet.Cells [ " A1 " ] .Style.Font.Size = 20 
                    workSheet.InsertColumn(11 )。
                    workSheet.InsertRow(11 )。
                    workSheet.Column(1).Width = 5 
                }
                結果 = package.GetAsByteArray()。
            }
            戻り値の結果;
        }
        ///  <要約> 
        /// 导出エクセル
         ///  </要約> 
        ///  <typeparam名= "T"> </ typeparam> 
        ///  <PARAM NAME = "データ"> </ param>の
        // /  <PARAM NAME = "見出し"> </ param>の
        ///  <PARAM NAME = "isShowSlNo"> </ param>の
        ///  <PARAM NAME = "columnsToTake"> </ param>の
        ///  <リターン> < /リターン> 
        パブリック 静的の バイト [] ExportExcel <T>(リスト<T>データ、見出し= "" ブール isShowSlNo = falseをparamsは 、文字列を[] columnsToTake)
        {
            リターンExportExcel(ListToDataTable(データ)は、見出し、isShowSlNo、columnsToTake)。
        }
    }

第二に、コール

  実行した後、ExcelがDドライブに保存されます

 文字列 STRSQL = 文字列(.Format "@ 名、[のPhoneNumber]電話AS、[ユーザー]の[メール]メールボックスとして、[部門] AS部門AS SELECT TOP 10 [名前] " );
 DTのDataTable = DBHelper.ExecuteTable(STRSQL);
  文字列 []列= { " 名前"" 電話"" メール"" 部門"  };
  バイト [] =含むFileContent ExcelExportHelper.ExportExcel(DT、"" falseに、列);
 FileStream fsの = 新しい FileStreamを(@ " D:\信息の.xlsx " 、FileMode.Create、FileAccess.Write)。
 fs.Write(含むFileContent、0 、filecontent.Length)。
 fs.Flush();
 fs.Close();

 

おすすめ

転載: www.cnblogs.com/yu-shang/p/11815612.html