用户名: 密   码:
   飞诺网 加入收藏
飞诺网 网站开发 VBScript ASP Asp.net Jsp php XML CGI-Perl 搜索引擎 ajax web技术
.net系列教程 .net实例 .Net技术文档

您当前的位置:飞诺网 >> .net >> .Net技术文档

C#中的excel操作类(集合了几个别人的类,另外自己编写了本人工作中常用到的功能函数)

www.diybl.com    时间 : 2010-06-21  作者:佚名   编辑:壹枝雪糕 点击:   [ 评论 ]

/*
        public string mFilename;
        public Excel.Application app;
        public Excel.Workbooks wbs;
        public Excel.Workbook wb;
        public Excel.Worksheets wss;
        public Excel.Worksheet ws;
        /// 构造函数,不创建Excel工作薄
        public ExcelEdit()
        /// 创建Excel工作薄
        public void Create()//创建一个Excel对象
        /// 显示Excel
        public void ShowExcel()
        /// 打开一个存在的Excel文件
        public void Open(string FileName)//打开一个Excel文件
        public Excel.Worksheet GetSheet(string SheetName)
        //获取一个工作表
         public Excel.Worksheet AddSheet(string SheetName)
        //添加一个工作表
        public void DelSheet(string SheetName)//删除一个工作表
        public Excel.Worksheet ReNameSheet(string OldSheetName, string NewSheetName)//重命名一个工作表一
        public Excel.Worksheet ReNameSheet(Excel.Worksheet Sheet, string NewSheetName)//重命名一个工作表二
        //把EXCEl中的某工作表显示到datagridview中
        public void Excel2DBView(string tablename, DataGridView dataGridView1)
        //把EXCEl中的某工作表中字段值为FieldNameStr的行显示到datagridview中
        public void Excel2DBView_SelectFieldValue(string tablename, string FieldName, string FieldNameStr, DataGridView dataGridView1)
        //返回excel中不把第一行当做标题看待的数据集
        public DataSet GetNewDataSet(string tablename)
        //根据字段名,删除EXCEl中的某工作表中的记录(SQL语句未成功执行)
        public void DeleteExcelFieldValue(string tablename, string FieldName, string FieldNameStr)
        /// 在工作表中插入行,并调整其他行以留出空间
        public void InsertRows(Excel.Worksheet sheet, int rowIndex)
       /// 在工作表中删除行
        public void DeleteRows(Excel.Worksheet sheet, int rowIndex)
        /// 在工作表中删除所有行名为rowText的行
        public void DeleteRows(string sheetName, string FieldName, string rowText)
        /// 根据字段名,    /// 根据字段名,追加记录
        public void AddRecords(string sheetName, string FieldName, string recordText)
        ///   DataGridView导出到Excel
      //获取字段中的字段名称集
       public StringCollection GetFieldValues(string sheetName,string FieldName)
        public void DGView2Excel(DataGridView dgv, string xlsFileName, string sheetName)
       ///   DataGridView追加到Excel指定表格中
        public void DGViewAdd2Excel(DataGridView dgv, string xlsFileName, string sheetName)
        public StringCollection countexcel(string _filename) //返回工作表名
        public DataSet proces(string _filename) //用datset返回整个excel
        public int rowcount(string _filename, string sheetname) //行数
        public int rowcount(string sheetname) //行数
        public int colcount(string _filename, string sheetname) //列数
        public int colcount(string sheetname) //列数
        public string GetCellStr(string sheetName, int row, int col) //返回指定单元格的文本
        public void SetCellStr(string sheetName, int row, int col, string writeStr) //将字符串写入指定单元格
        public void WriteData(string[,] data, string fileName, string sheetName, int startRow, int startColumn)
        /// 将数据写入Excel
        public void WriteData(string data, string fileName, string sheetName, int row, int column)
        /// 读取指定单元格数据
        public string ReadData(string fileName, string sheetName, int row, int column)
        public void UniteCells(Excel.Worksheet ws, int x1, int y1, int x2, int y2)
        //合并单元格
        public void UniteCells(string ws, int x1, int y1, int x2, int y2)
        //合并单元格
        public void InsertTable(System.Data.DataTable dt, string ws, int startX, int startY)
        //将内存中数据表格插入到Excel指定工作表的指定位置 为在使用模板时控制格式时使用一
        public void InsertTable(System.Data.DataTable dt, Excel.Worksheet ws, int startX, int startY)
        //将内存中数据表格插入到Excel指定工作表的指定位置二
        public void AddTable(System.Data.DataTable dt, string ws, int startX, int startY)
        //将内存中数据表格添加到Excel指定工作表的指定位置一
        public void AddTable(System.Data.DataTable dt, Excel.Worksheet ws, int startX, int startY)
        //将内存中数据表格添加到Excel指定工作表的指定位置二
        /// 保存Excel
        public bool Save()
       /// Excel文档另存为
       public bool SaveAs(object FileName)
      //去掉文件后缀
       public void RemoveExefilter(string FileName)
       public void Close()
        //关闭一个Excel对象,销毁对象
        public void release_xlsObj()
        //////如何杀死word,excel等进程,下面的方法可以直接调用
        public void KillProcess(string processName)
       
*/
//引入Excel的COM组件

using System;
//using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//using Microsoft.Office.Interop;
using Microsoft.Office.Core;
//using Excel = Microsoft.Office.Interop.Excel;
//using Excel = Microsoft.Office.Interop.Excel;
using Excel;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Reflection;  // 引用这个才能使用Missing字段
using System.Collections.Specialized;
using System.Runtime.InteropServices;

 


namespace ExcelEditClass
{
/// <SUMMARY>
/// ExcelEdit 的摘要说明
/// </SUMMARY>
   public class ExcelEdit
    //public class ExcelEdit:Excel.ApplicationClass  //liuxfu
   {  //to kill excel
       [DllImport("User32.dll", CharSet = CharSet.Auto)]
       public static extern int GetWindowThreadProcessId(IntPtr hwnd, out   int ID);  

        public string mFilename;
        public Excel.Application app;
        public Excel.Workbooks wbs;
        public Excel.Workbook wb;
        public Excel.Worksheets wss;
        public Excel.Worksheet ws;
        /// <summary>
        /// 构造函数,不创建Excel工作薄
        /// </summary>
        public ExcelEdit()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        /// <summary>
        /// 创建Excel工作薄
        /// </summary>
        public void Create()//创建一个Excel对象
        {
            try
            {
                app = new Excel.Application();
                wbs = app.Workbooks;
                wb = wbs.Add(true);
            }
            catch (Exception e)
            { MessageBox.Show(e.Message.ToString()); }
        }
        /// <summary>
        /// 显示Excel
        /// </summary>
        public void ShowExcel()
        {
            app.Visible = true;
        }
        /// <summary>
        /// 打开一个存在的Excel文件
        /// </summary>
        /// <param name="FileName">Excel完整路径加文件名</param>
        public void Open(string FileName)//打开一个Excel文件
        {
            try
            {
                app = new Excel.Application();
                wbs = app.Workbooks;
                wb = wbs.Add(FileName);
                //wb = wbs.Open(FileName, 0, true, 5,"", "", true, Excel.XlPlatform.xlWindows, "t", false, false, 0, true,Type.Missing,Type.Missing);
                //wb = wbs.Open(FileName,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Excel.XlPlatform.xlWindows,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
                mFilename = FileName;

                //设置禁止弹出保存和覆盖的询问提示框
                app.DisplayAlerts = false;
                app.AlertBeforeOverwriting = false;
                app.UserControl = true;//如果只想用程序控制该excel而不想让用户操作时候,可以设置为false
            }
            catch (Exception e)
            { MessageBox.Show(e.Message.ToString()); }
       
        }
        public Excel.Worksheet GetSheet(string SheetName)
       //获取一个工作表
        {
            Excel.Worksheet s = (Excel.Worksheet)wb.Worksheets[SheetName];
            return s;
        }
        public Excel.Worksheet AddSheet(string SheetName)
        //添加一个工作表
        {
            Excel.Worksheet s = (Excel.Worksheet)wb.Worksheets.Add(Type.Missing,Type.Missing,Type.Missing,Type.Missing);
            try
            { s.Name = SheetName;
              return s;
            }
            catch {
                return null;
            }
        }

        public void DelSheet(string SheetName)//删除一个工作表
        {
            try
            {
                ((Excel.Worksheet)wb.Worksheets[SheetName]).Delete();
            }
            catch (Exception e)
            { MessageBox.Show(e.Message.ToString()); }
        }
        public Excel.Worksheet ReNameSheet(string OldSheetName, string NewSheetName)//重命名一个工作表一
        {
            Excel.Worksheet s = (Excel.Worksheet)wb.Worksheets[OldSheetName];
            try { s.Name = NewSheetName;
            return s;
            }
            catch (Exception e)
            { MessageBox.Show(e.Message.ToString());
            return null;
            }
        }

        public Excel.Worksheet ReNameSheet(Excel.Worksheet Sheet, string NewSheetName)//重命名一个工作表二
        {

            try { Sheet.Name = NewSheetName;
            return Sheet;
            }
            catch (Exception e)
            { MessageBox.Show(e.Message.ToString());
            return null;
            }  
        }
       //把EXCEl中的某工作表显示到datagridview中
       /// <summary>
       /// ExcelEdit myExcel = new ExcelEdit();
       /// myExcel.Open("d:\\数据库表格20071217.xls");
       /// myExcel.Excel2DBView("908", this.dataGridView1);
       /// myExcel.Close();
       /// </summary>
       /// <param name="tablename"></param>
       /// <param name="dataGridView1"></param>
        public void Excel2DBView(string xlsFilaName,string tablename, DataGridView dataGridView1)
        {
            try
            {
                string sExcelFile = xlsFilaName;

                //string strExcelFileName = @""+ myPath +"";
                //string strString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + strExcelFileName + ";Extended Properties = &apos;Excel 8.0;HDR=NO;IMEX=1 &apos;";

                //string sConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" + sExcelFile + ";Extended Properties=Excel 8.0;";
                string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sExcelFile + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\"";
                OleDbConnection connection = new OleDbConnection(sConnectionString);
                string sql_select_commands = "Select * from [" + tablename + "$]";
                OleDbDataAdapter adp = new OleDbDataAdapter(sql_select_commands, connection);
                DataSet ds = new DataSet();
                adp.Fill(ds, tablename);

                dataGridView1.Rows.Clear();
                dataGridView1.Columns.Clear();
                //写入dataGridView控件标题
                for (int j = 0; j < ds.Tables[tablename].Columns.Count; j++)
                {
                    dataGridView1.Columns.Add(ds.Tables[tablename].Rows[0][j].ToString(), ds.Tables[tablename].Rows[0][j].ToString());
                }
                for (int i = 1; i < ds.Tables[tablename].Rows.Count; i++)
                {
                    dataGridView1.Rows.Add();
                }
                //写入dataGridView控件行数据
                for (int i = 1; i < ds.Tables[tablename].Rows.Count; i++)
                    for (int j = 0; j < ds.Tables[tablename].Columns.Count; j++)
                    {
                        dataGridView1.Rows[i - 1].Cells[j].Value = Convert.ToString(ds.Tables[tablename].Rows[i][j]);
                    }
            }
            catch (Exception e)
            { MessageBox.Show(e.Message.ToString()); }
          
            /*
            for (int i = 0; i < ds.Tables["Book1"].Rows.Count; i++)
            {
                sum1 += Convert.ToInt32(ds.Tables["Book1"].Rows[i]["字段A"]);
            }

 1 2 3 4
如果图片或页面不能正常显示请点击这里
.Net技术文档推荐文章

文章评论