• C# 导出 Excel


    
    
     [一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/3228240.html]
      1 using System;
      2 using System.Data;
      3 using System.IO;
      4 using System.Windows.Forms;
      5 using Excel = Microsoft.Office.Interop.Excel;
      6 using System.Collections.Generic;
      7 
      8 namespace PlaneExcel
      9 {
     10     static class Export2ExcelAction
     11     {
     12         /// <summary>
     13         /// 单表
     14         /// </summary>
     15         /// <param name="FileName"></param>
     16         /// <param name="dataTable"></param>
     17         /// <param name="SheetName"></param>
     18         /// <param name="form"></param>
     19         public static void Export2Excel(string FileName, DataTable dataTable, string SheetName, System.Windows.Forms.Form form)
     20         {
     21             Excel.Application excelApplication = null;
     22             try
     23             {
     24                 excelApplication = new Excel.Application();
     25             }
     26             catch (Exception ex)
     27             {
     28                 System.Windows.Forms.MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel...");
     29                 return;
     30             }
     31             excelApplication.DisplayAlerts = false;
     32             Excel.Workbooks workbooks = excelApplication.Workbooks;
     33             Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);//建工作簿
     34             Excel.Worksheet TableASheet = (Excel.Worksheet)workbook.Worksheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);
     35             TableASheet.Name = SheetName;
     36             TableASheet.Cells.Borders.LineStyle = Excel.XlLineStyle.xlLineStyleNone;
     37             Excel.Range range = TableASheet.get_Range("A1", Type.Missing);
     38             int ColumnIndex = 1;
     39             foreach (DataColumn dc in dataTable.Columns)
     40             {
     41                 range = TableASheet.get_Range(NunberToChar(ColumnIndex) + 1, Type.Missing);
     42                 range.Value2 = dc.ColumnName;
     43                 ColumnIndex++;
     44             }
     45             int RowIndex = 2;
     46             foreach (DataRow dr in dataTable.Rows)
     47             {
     48                 ColumnIndex = 1;
     49                 foreach (DataColumn dc in dataTable.Columns)
     50                 {
     51                     range = TableASheet.get_Range(NunberToChar(ColumnIndex) + RowIndex, Type.Missing);
     52                     range.Value2 = dr[dc.ColumnName].ToString();
     53                     ColumnIndex++;
     54                 }
     55                 RowIndex++;
     56             }
     57             try
     58             {
     59                 ((Excel.Worksheet)workbook.Sheets.Item["Sheet1"]).Delete();
     60                 workbook.Saved = true;
     61                 workbook.SaveCopyAs(FileName);
     62             }
     63             catch (FileNotFoundException fileEx)
     64             {
     65                 System.Windows.Forms.MessageBox.Show("请查看当前导出的文件是否存在或者正在运行中,
    请重新尝试!", "错误", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
     66                 return;
     67             }
     68             catch (Exception ex)
     69             {
     70                 System.Windows.Forms.MessageBox.Show("请查看当前导出的文件是否存在或者正在运行中,
    请重新尝试!", "错误", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
     71                 return;
     72             }
     73             finally
     74             {
     75                 workbook.Close();
     76                 workbooks.Close();
     77                 excelApplication.Quit();
     78                 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
     79                 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
     80                 System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication);
     81                 GC.Collect();    
     82             }
     83 
     84             if (MessageBox.Show("导出成功,是否立即打开?", "导出结果", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
     85                 System.Diagnostics.Process.Start(FileName);
     86         }
     87         /// <summary>
     88         /// 多表
     89         /// </summary>
     90         /// <param name="FileName"></param>
     91         /// <param name="li_dt"></param>
     92         /// <param name="li_SheetName"></param>
     93         /// <param name="form"></param>
     94         public static void Export2Excel(string FileName, List<DataTable> li_dt, List<string> li_SheetName, System.Windows.Forms.Form form)
     95         {        
     96             Excel.Application excelApplication = null;
     97             try
     98             {
     99                 excelApplication = new Excel.Application();
    100             }
    101             catch (Exception ex)
    102             {
    103                 System.Windows.Forms.MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel...");
    104                 return;
    105             }
    106             excelApplication.DisplayAlerts = false;
    107             Excel.Workbooks workbooks = excelApplication.Workbooks;
    108             Excel.Workbook workbook = workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);            
    109             for (int i = 0; i < li_dt.Count; i++)
    110             {
    111                 Excel.Worksheet TableASheet = (Excel.Worksheet)workbook.Worksheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);
    112                 TableASheet.Name = li_SheetName[i];
    113                 TableASheet.Cells.Borders.LineStyle = Excel.XlLineStyle.xlLineStyleNone;
    114                 Excel.Range range = TableASheet.get_Range("A1", Type.Missing);
    115                 int ColumnIndex = 1;
    116                 foreach (DataColumn dc in li_dt[i].Columns)
    117                 {
    118                     range = TableASheet.get_Range(NunberToChar(ColumnIndex) + 1, Type.Missing);
    119                     range.Value2 = dc.ColumnName;
    120                     ColumnIndex++;
    121                 }
    122                 int RowIndex = 2;
    123                 foreach (DataRow dr in li_dt[i].Rows)
    124                 {
    125                     ColumnIndex = 1;
    126                     foreach (DataColumn dc in li_dt[i].Columns)
    127                     {
    128                         range = TableASheet.get_Range(NunberToChar(ColumnIndex) + RowIndex, Type.Missing);
    129                         range.Value2 = dr[dc.ColumnName].ToString();
    130                         ColumnIndex++;
    131                     }
    132                     RowIndex++;
    133                 }
    134             }
    135             try
    136             {
    137                 ((Excel.Worksheet)workbook.Sheets.Item["Sheet1"]).Delete();
    138                 workbook.Saved = true;
    139                 workbook.SaveCopyAs(FileName);
    140             }
    141             catch (FileNotFoundException fileEx)
    142             {
    143                 System.Windows.Forms.MessageBox.Show("请查看当前导出的文件是否存在或者正在运行中,
    请重新尝试!", "错误", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
    144                 return;
    145             }
    146             catch (Exception ex)
    147             {
    148                 System.Windows.Forms.MessageBox.Show("请查看当前导出的文件是否存在或者正在运行中,
    请重新尝试!", "错误", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);
    149                 return;
    150             }
    151             finally
    152             {
    153                 workbook.Close();
    154                 workbooks.Close();
    155                 excelApplication.Quit();
    156                 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
    157                 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
    158                 System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApplication);
    159                 GC.Collect();     
    160             }
    161 
    162             if (MessageBox.Show("导出成功,是否立即打开?", "导出结果", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.OK)
    163                 System.Diagnostics.Process.Start(FileName);
    164         }
    165         public static string NunberToChar(int number)
    166         {
    167             if (1 <= number && 26 >= number)
    168             {
    169                 int num = number + 64;
    170                 System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
    171                 byte[] btNumber = new byte[] { (byte)num };
    172                 return asciiEncoding.GetString(btNumber);
    173             }
    174             else if (number > 26)
    175             {
    176                 int leftValue = 0;
    177                 int rightValue = 0;
    178                 leftValue = number / 26;
    179                 rightValue = number % 26;
    180 
    181                 if (number % 26 == 0)
    182                 {
    183                     leftValue = leftValue - 1;
    184                     rightValue = ((number - 1) % 26) + 1;
    185                 }
    186                 return NunberToChar(leftValue) + NunberToChar(rightValue);
    187             }
    188             return string.Empty;
    189         }
    190 
    191     }
    192 }
  • 相关阅读:
    idea输出目录详解
    svn的使用教程
    java常用技术名词解析
    1.0 idea使用教程(配置)一
    fastDFS的搭建
    log4j的配置
    关于elementUI中上传组件点击上传时页面卡死的问题
    Nginx的反向代理
    给所有实体类重写tostring方法
    Nginx的配置
  • 原文地址:https://www.cnblogs.com/wanghafan/p/3228240.html
Copyright © 2020-2023  润新知