• EXCEL的导入导出


      1 using System;
      2 using System.Data;
      3 using System.Data.OleDb;
      4 using System.IO;
      5 
      6 namespace COMMON
      7 {
      8     public class Excel_OutputInput
      9     {
     10         private int _ReturnStatus;
     11         private string _ReturnMessage;
     12 
     13         /// <summary>
     14         /// 执行返回状态
     15         /// </summary>
     16         public int ReturnStatus
     17         {
     18             get
     19             {
     20                 return _ReturnStatus;
     21             }
     22         }
     23 
     24         /// <summary>
     25         /// 执行返回信息
     26         /// </summary>
     27         public string ReturnMessage
     28         {
     29             get
     30             {
     31                 return _ReturnMessage;
     32             }
     33         }
     34 
     35         public Excel_OutputInput()
     36         {
     37         }
     38 
     39 
     40         /// <summary>
     41         /// 导入EXCEL到DataSet
     42         /// </summary>
     43         /// <param name="fileName">Excel全路径文件名</param>
     44         /// <returns>导入成功的DataSet</returns>
     45         public DataTable ImportExcel(string fileName)
     46         {
     47             //判断是否安装EXCEL
     48             Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
     49             if (xlApp == null)
     50             {
     51                 _ReturnStatus = -1;
     52                 _ReturnMessage = "无法创建Excel对象,可能您的计算机未安装Excel";
     53                 return null;
     54             }
     55 
     56             //判断文件是否被其他进程使用            
     57             Microsoft.Office.Interop.Excel.Workbook workbook;
     58             try
     59             {
     60                 workbook = xlApp.Workbooks.Open(fileName, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, 1, 0);
     61             }
     62             catch
     63             {
     64                 _ReturnStatus = -1;
     65                 _ReturnMessage = "Excel文件处于打开状态,请保存关闭";
     66                 return null;
     67             }
     68 
     69             //获得所有Sheet名称
     70             int n = workbook.Worksheets.Count;
     71             string[] SheetSet = new string[n];
     72             System.Collections.ArrayList al = new System.Collections.ArrayList();
     73             for (int i = 1; i <= n; i++)
     74             {
     75                 SheetSet[i - 1] = ((Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[i]).Name;                
     76             }
     77 
     78             //释放Excel相关对象
     79             workbook.Close(null, null, null);
     80             xlApp.Quit();
     81             if (workbook != null)
     82             {
     83                 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
     84                 workbook = null;
     85             }
     86             if (xlApp != null)
     87             {
     88                 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
     89                 xlApp = null;
     90             }
     91             GC.Collect();
     92 
     93             //把EXCEL导入到DataSet
     94             DataSet ds = new DataSet();
     95             DataTable table = new DataTable();
     96             string conStr;
     97             FileInfo file = new FileInfo(fileName);
     98             string extention = file.Extension;
     99             switch (extention)
    100             {
    101                 case ".xls":
    102                     conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0";
    103                     break;
    104                 case ".xlsx":
    105                     conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=Excel 12.0";
    106                     break;
    107                 default:
    108                     conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0";
    109                     break;
    110             }
    111 
    112             //string connStr = " Provider = Microsoft.Jet.OLEDB.12.0 ; Data Source = " + fileName + ";Extended Properties=Excel 12.0";
    113             using (OleDbConnection conn = new OleDbConnection(conStr))
    114             {
    115                 conn.Open();
    116                 OleDbDataAdapter da;
    117                 string sql = "select * from [" + SheetSet[0] + "$] ";
    118                 da = new OleDbDataAdapter(sql, conn);
    119                 da.Fill(ds, SheetSet[0]);
    120                 da.Dispose();
    121                 table = ds.Tables[0];
    122                 conn.Close();
    123                 conn.Dispose();
    124             }
    125             return table;
    126         }
    127 
    128         /// <summary>
    129         /// 把DataTable导出到EXCEL
    130         /// </summary>
    131         /// <param name="reportName">报表名称</param>
    132         /// <param name="dt">数据源表</param>
    133         /// <param name="saveFileName">Excel全路径文件名</param>
    134         /// <returns>导出是否成功</returns>
    135         public bool ExportExcel(string reportName, System.Data.DataTable dt, string saveFileName)
    136         {
    137             if (dt == null)
    138             {
    139                 _ReturnStatus = -1;
    140                 _ReturnMessage = "数据集为空!";
    141                 return false;
    142             }
    143 
    144             bool fileSaved = false;
    145             Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    146             if (xlApp == null)
    147             {
    148                 _ReturnStatus = -1;
    149                 _ReturnMessage = "无法创建Excel对象,可能您的计算机未安装Excel";
    150                 return false;
    151             }
    152 
    153             Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
    154             Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    155             Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
    156             worksheet.Cells.Font.Size = 10;
    157             Microsoft.Office.Interop.Excel.Range range;
    158 
    159             long totalCount = dt.Rows.Count;
    160             long rowRead = 0;
    161             float percent = 0;
    162 
    163             worksheet.Cells[1, 1] = reportName;
    164             ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1]).Font.Size = 12;
    165             ((Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, 1]).Font.Bold = true;
    166 
    167             //写入字段
    168             for (int i = 0; i < dt.Columns.Count; i++)
    169             {
    170                 worksheet.Cells[2, i + 1] = dt.Columns[i].ColumnName;
    171                 range = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, i + 1];
    172                 range.Interior.ColorIndex = 15;
    173                 range.Font.Bold = true;
    174 
    175             }
    176             //写入数值
    177             for (int r = 0; r < dt.Rows.Count; r++)
    178             {
    179                 for (int i = 0; i < dt.Columns.Count; i++)
    180                 {
    181                     worksheet.Cells[r + 3, i + 1] = dt.Rows[r][i].ToString();
    182                 }
    183                 rowRead++;
    184                 percent = ((float)(100 * rowRead)) / totalCount;
    185             }            
    186             range = worksheet.Range[worksheet.Cells[2, 1], worksheet.Cells[dt.Rows.Count + 2, dt.Columns.Count]];
    187             range.BorderAround(Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin, Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic, null);
    188             if (dt.Rows.Count > 0)
    189             {
    190                 range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic;
    191                 range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
    192                 range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
    193             }
    194             if (dt.Columns.Count > 1)
    195             {
    196                 range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].ColorIndex = Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexAutomatic;
    197                 range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
    198                 range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
    199             }
    200 
    201             //保存文件
    202             if (saveFileName != "")
    203             {
    204                 try
    205                 {
    206                     workbook.Saved = true;
    207                     workbook.SaveCopyAs(saveFileName);
    208                     fileSaved = true;
    209                 }
    210                 catch (Exception ex)
    211                 {
    212                     fileSaved = false;
    213                     _ReturnStatus = -1;
    214                     _ReturnMessage = "导出文件时出错,文件可能正被打开!
    " + ex.Message;
    215                 }
    216             }
    217             else
    218             {
    219                 fileSaved = false;
    220             }
    221 
    222             //释放Excel对应的对象
    223             if (range != null)
    224             {
    225                 System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
    226                 range = null;
    227             }
    228             if (worksheet != null)
    229             {
    230                 System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
    231                 worksheet = null;
    232             }
    233             if (workbook != null)
    234             {
    235                 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
    236                 workbook = null;
    237             }
    238             if (workbooks != null)
    239             {
    240                 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);
    241                 workbooks = null;
    242             }
    243             xlApp.Application.Workbooks.Close();
    244             xlApp.Quit();
    245             if (xlApp != null)
    246             {
    247                 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
    248                 xlApp = null;
    249             }
    250             GC.Collect();
    251             return fileSaved;
    252         }
    253     }
    254 }
  • 相关阅读:
    log4j的配置详解(转)
    不同数据库的driverClassName与url
    http请求报头
    java发生邮件(转)
    使用maven下载源码和doc(转)
    处理表单数据
    VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法
    vc6.0连接mysql数据库
    转:Android 判断用户2G/3G/4G移动数据网络
    Linux平台Makefile文件的编写基础入门(课堂作业)
  • 原文地址:https://www.cnblogs.com/Sunflower-/p/5531020.html
Copyright © 2020-2023  润新知