zoukankan      html  css  js  c++  java
  • C# DataTable WriteToExcel

    1:帮助类

      1 public class ExcelHander
      2     {
      3         private string AList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
      4         private Workbook m_objBook;
      5         private Workbooks m_objBooks;
      6         private Application m_objExcel;
      7         private Missing miss = Missing.Value;
      8         public static Missing MissValue = Missing.Value;
      9         private Worksheet sheet;
     10 
     11         public void CloseExcelApplication()
     12         {
     13             try
     14             {
     15                 foreach (Process process in Process.GetProcessesByName("excel"))
     16                 {
     17                     process.Kill();
     18                 }
     19             }
     20             catch (Exception exception)
     21             {
     22                 throw new Exception(exception.Message + exception.StackTrace, exception.InnerException);
     23             }
     24         }
     25 
     26         public void CreateExceFile()
     27         {
     28             this.m_objExcel = new ApplicationClass();
     29             this.UserControl(false);
     30             this.m_objBooks = this.m_objExcel.Workbooks;
     31             this.m_objBook = this.m_objBooks.Add(this.miss);
     32             this.sheet = (Worksheet)this.m_objBook.ActiveSheet;
     33         }
     34 
     35         public string GetAix(int x, int y)
     36         {
     37             char[] chArray = this.AList.ToCharArray();
     38             if (x >= 0x1a)
     39             {
     40                 return "";
     41             }
     42             string str = "";
     43             return (str + chArray[x - 1].ToString() + y.ToString());
     44         }
     45 
     46         public Range getRange(int x1, int y1, int x2, int y2)
     47         {
     48             return this.sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2));
     49         }
     50 
     51         public object getValue(int x, int y)
     52         {
     53             return this.sheet.get_Range(this.GetAix(x, y), this.miss).Cells.get_Value(Missing.Value);
     54         }
     55 
     56         public void insertRow(int y)
     57         {
     58             Range range = this.sheet.get_Range(this.GetAix(1, y), this.GetAix(0x19, y));
     59             range.Copy(this.miss);
     60             range.Insert(XlDirection.xlDown, this.miss);
     61             range.get_Range(this.GetAix(1, y), this.GetAix(0x19, y));
     62             range.Select();
     63             this.sheet.Paste(this.miss, this.miss);
     64         }
     65 
     66         public void mergeCell(int x1, int y1, int x2, int y2)
     67         {
     68             this.sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2)).Merge(Missing.Value);
     69         }
     70 
     71         public Worksheet NewSheet()
     72         {
     73             return (Worksheet)this.m_objBook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
     74         }
     75 
     76         public void OpenExcelFile(string filename)
     77         {
     78             this.m_objExcel = new ApplicationClass();
     79             this.UserControl(false);
     80             this.m_objExcel.Workbooks.Open(filename, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss, this.miss);
     81             this.m_objBooks = this.m_objExcel.Workbooks;
     82             this.m_objBook = this.m_objExcel.ActiveWorkbook;
     83             this.sheet = (Worksheet)this.m_objBook.ActiveSheet;
     84         }
     85 
     86         public void past()
     87         {
     88             string link = "a,b,c,d,e,f,g";
     89             this.sheet.Paste(this.sheet.get_Range(this.GetAix(10, 10), this.miss), link);
     90         }
     91 
     92         public void ReleaseExcel()
     93         {
     94             this.m_objExcel.Quit();
     95             Marshal.ReleaseComObject(this.m_objExcel);
     96             Marshal.ReleaseComObject(this.m_objBooks);
     97             Marshal.ReleaseComObject(this.m_objBook);
     98             Marshal.ReleaseComObject(this.sheet);
     99             GC.Collect();
    100         }
    101 
    102         public void SaveAs(string FileName)
    103         {
    104             this.m_objBook.SaveAs(FileName, this.miss, this.miss, this.miss, this.miss, this.miss, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, this.miss, this.miss, this.miss, this.miss);
    105             this.m_objBook.Close(false, this.miss, this.miss);
    106         }
    107 
    108         public void setBorder(int x1, int y1, int x2, int y2, int Width)
    109         {
    110             this.sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2)).Borders.Weight = Width;
    111         }
    112 
    113         public void setValue(int x, int y, string text)
    114         {
    115             this.sheet.get_Range(this.GetAix(x, y), this.miss).set_Value(this.miss, text);
    116         }
    117 
    118         public void setValue(int x, int y, string text, System.Drawing.Font font, Color color)
    119         {
    120             this.setValue(x, y, text);
    121             Range range = this.sheet.get_Range(this.GetAix(x, y), this.miss);
    122             range.Font.Size = font.Size;
    123             range.Font.Bold = font.Bold;
    124             range.Font.Color = color;
    125             range.Font.Name = font.Name;
    126             range.Font.Italic = font.Italic;
    127             range.Font.Underline = font.Underline;
    128         }
    129 
    130         public void UserControl(bool usercontrol)
    131         {
    132             if (this.m_objExcel != null)
    133             {
    134                 this.m_objExcel.UserControl = usercontrol;
    135                 this.m_objExcel.DisplayAlerts = usercontrol;
    136                 this.m_objExcel.Visible = usercontrol;
    137             }
    138         }
    139 
    140         public Worksheet CurrentSheet
    141         {
    142             get
    143             {
    144                 return this.sheet;
    145             }
    146             set
    147             {
    148                 this.sheet = value;
    149             }
    150         }
    151 
    152         public Workbook CurrentWorkBook
    153         {
    154             get
    155             {
    156                 return this.m_objBook;
    157             }
    158             set
    159             {
    160                 this.m_objBook = value;
    161             }
    162         }
    163 
    164         public Workbooks CurrentWorkBooks
    165         {
    166             get
    167             {
    168                 return this.m_objBooks;
    169             }
    170             set
    171             {
    172                 this.m_objBooks = value;
    173             }
    174         }
    175     }
    View Code

    2:实现方法

     1 public static void WirteToExcel()
     2         {
     3             if (ConfigReader.ReportTable.Rows.Count > 0)
     4             {
     5                 ExcelHander excelwirter = new ExcelHander();
     6                 int allNum = ConfigReader.ReportTable.Rows.Count;//统计下载总数
     7                 int resultfulNum = ConfigReader.ReportTable.Select("连接状态='有 效'").Length;//有效的下载连接数
     8                 int errorNum = ConfigReader.ReportTable.Select("连接状态='无 效'").Length;//无效的下载连接数
     9                 try
    10                 {
    11                     excelwirter.CreateExceFile();
    12                     #region  写入细节
    13                     int i = 1;
    14                     int j = 1;
    15                     foreach (var item in ConfigReader.ReportTable.Columns)
    16                     {
    17                         excelwirter.setValue(j, 1, ConfigReader.ReportTable.Columns[j - 1].ToString(), new System.Drawing.Font("TimesNewRoman", 12, FontStyle.Bold), Color.Black);
    18                         j++;
    19                     }
    20                     i = 2;
    21                     j = 1;
    22                     foreach (DataRow dr in ConfigReader.ReportTable.Rows)
    23                     {
    24                         if (dr[2].ToString() == "无 效")
    25                         {
    26                             excelwirter.setValue(1, i, dr[0].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Red);
    27                             excelwirter.setValue(2, i, dr[1].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Red);
    28                             excelwirter.setValue(3, i, dr[2].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Red);
    29                             excelwirter.setValue(4, i, dr[3].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Red);
    30                         }
    31                         else
    32                         {
    33                             excelwirter.setValue(1, i, dr[0].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Black);
    34                             excelwirter.setValue(2, i, dr[1].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Black);
    35                             excelwirter.setValue(3, i, dr[2].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Black);
    36                             excelwirter.setValue(4, i, dr[3].ToString(), new System.Drawing.Font("TimesNewRoman", 10, FontStyle.Regular), Color.Black);
    37                         }
    38                         i++;
    39                     }
    40                     #endregion
    41                     #region//写入汇总
    42                     excelwirter.setValue(1, ++i, "下载总数:" + allNum.ToString(), new System.Drawing.Font("TimesNewRoman", 12, FontStyle.Bold), Color.Black);
    43                     excelwirter.setValue(1, ++i, "连接状态正常数:" + resultfulNum.ToString(), new System.Drawing.Font("TimesNewRoman", 12, FontStyle.Bold), Color.Black);
    44                     excelwirter.setValue(1, ++i, "连接异常数:" + errorNum.ToString(), new System.Drawing.Font("TimesNewRoman", 12, FontStyle.Bold), Color.Black);
    45                     #endregion
    46                     excelwirter.SaveAs(ConfigReader.WorkingPath + "report.xlsx");
    47                 }
    48                 catch (Exception)
    49                 {
    50                     Console.WriteLine("写入异常,请确定excel文件没有被独占");
    51                 }
    52                 finally
    53                 {
    54                     excelwirter.ReleaseExcel();
    55                     excelwirter.CloseExcelApplication();
    56                 }
    57             }
    58         }
    View Code
  • 相关阅读:
    LG P4284 [SHOI2014]概率充电器
    LG P2592 [ZJOI2008]生日聚会
    LG P4953 [USACO02FEB]Cow Cycling
    LG P2389 电脑班的裁员
    LG P2344 [USACO11FEB]Generic Cow Protests G
    前端简历
    前端面试题目
    大前端的技术栈
    前端 -为什么要清楚浮动?
    Redis的功能实现
  • 原文地址:https://www.cnblogs.com/lewisli/p/4128750.html
Copyright © 2011-2022 走看看