wpf控制excel

来源:互联网 发布:软件代理平台 编辑:程序博客网 时间:2024/06/02 06:09

using Microsoft.Office.Interop.Excel;
using System.Data; 



private void Button_Click(object sender, RoutedEventArgs e)

        {
            System.Data.DataTable dt = new System.Data.DataTable();
            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("NickName", typeof(string));
            dt.Columns.Add("QNumber", typeof(string));


            DataRow row = dt.NewRow();
            row["ID"] = 1;
            row["NickName"] = "sanjiawan";
            row["QNumber"] = "12345678";
            dt.Rows.Add(row);


            row = dt.NewRow();
            row["ID"] = 2;
            row["NickName"] = "人物2";
            row["QNumber"] = "9058307";
            dt.Rows.Add(row);


            //创建Excel


            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
//             Workbook excelWB = excelApp.Workbooks.Add(System.Type.Missing);    //创建工作簿(WorkBook:即Excel文件主体本身)
//             Worksheet excelWS = (Worksheet)excelWB.Worksheets[1];   //创建工作表(即Excel里的子表sheet) 1表示在子表sheet1里进行数据导出
// 
//             //excelWS.Cells.NumberFormat = "@";     //  如果数据中存在数字类型 可以让它变文本格式显示
//             //将数据导入到工作表的单元格
//             for (int i = 0; i < dt.Rows.Count; i++)
//             {
//                 for (int j = 0; j < dt.Columns.Count; j++)
//                 {
//                     excelWS.Cells[i + 1, j + 1] = dt.Rows[i][j].ToString();   //Excel单元格第一个从索引1开始
//                 }
//             }
// 
//             excelWB.SaveAs("D:\\sanjiawan.xlsx");  //将其进行保存到指定的路径
//             excelWB.Close();


            Workbook excelWB = excelApp.Workbooks.Add("D:\\sanjiawan.xlsx");


            if(excelWB != null)
            {
                Worksheet excelWS = (Worksheet)excelWB.Worksheets[1] ;


                if(excelWS != null)
                {
                    MessageBox.Show(excelWS.Cells[1, 1].Value2.ToString());
                }
                ReleaseCOM(excelWS);
            }


            ReleaseCOM(excelWB);


            excelApp.Quit();  //KillAllExcel(excelApp); 释放可能还没释放的进程


            ReleaseCOM(excelApp);


        }


        private void ReleaseCOM(object pObj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(pObj);
            }
            catch
            {
                throw new Exception("释放资源时发生错误!");
            }
            finally
            {
                pObj = null;
            }
        }
0 0