zoukankan      html  css  js  c++  java
  • WPF读取Sql的表导出为EXCEL

    1.目的和思路

    我们想做的是把Sql的数据库的表导出到Excel。。。

     

    那么想一想应该怎么做?

     

    首先我们要连接数据库,读取数据库的表,把每个表的每行和每列依次读取出来,然后写入到文件,文件为Excel格式的。。。

     

    2.步骤和过程

    第一,我们要连接数据库。。

     

    数据库添加到工程里面,参见前面的文章。。然后

     

    我们要创建一个类,我们命名为SqlToExcel.cs

     

     

    public class sqlconn
        {
            public sqlconn()
            {
                //
                // TODO: 在此处添加构造函数逻辑
                //
            }
    
            public SqlConnection ConnStr;
    
            public string SqlConnStr()//设置数据库文件连接字符串
            {
                string ConnectString = @"Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|DataBaseStudent.mdf;Integrated Security=True;User Instance=True";
                //@"Data Source=.SQLEXPRESS2008;AttachDBFilename=|DataDirectory|10xinguan-DB.mdf;Integrated Security=True;User Instance=True";
                //"server=.;database=Student-DB;uid=sa;pwd=sa";
    
    
                //这里没有打开数据库的原因是遵循晚打开、早关闭的原则        
                return ConnectString;
            }
    
            public void open()      //打开数据库
            {
                string constr;
                constr = SqlConnStr();
                ConnStr = new SqlConnection(constr);
                ConnStr.Open();
            }
    
            public void close()      //关闭数据库
            {
                ConnStr.Dispose();
                ConnStr.Close();
            }
    
            public int execsql(string sql)   //执行sql语句
            {
                open();
                SqlCommand cmd = new SqlCommand(sql, ConnStr);
                int count = cmd.ExecuteNonQuery();
                close();
                return count;
            }
    
            public DataSet dataset(string sql, string tablename)  //返回DataSet对象
            {
                open();
                SqlDataAdapter da = new SqlDataAdapter(sql, ConnStr);
                DataSet ds = new DataSet();
                da.Fill(ds, tablename);
                return ds;
            }
    
            public DataView dataview(string sql, string tablename) //返回DataView对象
            {
                DataSet ds = new DataSet();
                ds = dataset(sql, tablename);
                DataView dv = new DataView(ds.Tables[0]);
                return dv;
            }
    
            public SqlDataReader datareader(string sql) //返回DataReader对象
            {
                open();
                SqlCommand cmd = new SqlCommand(sql, ConnStr);
                SqlDataReader dr = cmd.ExecuteReader();
                return dr;
    
            }
    
            public DataTable datatb(string sql)  //返回DataSet对象
            {
                open();
                SqlDataAdapter da = new SqlDataAdapter(sql, ConnStr);
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
    
        }
    View Code



     

    这个类的作用就是配置下数据库,方便读取数据库的表方便。。

     

    数据库配置完成了我们要操作EXCEL了。。首先我们要引用一个.net类库Microsoft.Office.Interop.Excel

     

     

    public int DataToExcel1()
            {
    
                Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();//出错原因是没安装OFFICE的Excel,wps的不行
                Microsoft.Office.Interop.Excel.Workbook excelWB;
    
                excelWB = excelApp.Workbooks.Add(System.Reflection.Missing.Value);    //创建工作簿(WorkBook:即Excel文件主体本身)  
                Worksheet excelWS = (Worksheet)excelWB.Worksheets[1];   //创建工作表(即Excel里的子表sheet) 1表示在子表sheet1里进行数据导出  
                excelWS.Cells.NumberFormat = "@";     //  如果数据中存在数字类型 可以让它变文本格式显示  
    
    
    
    
    
                sqlconn con = new sqlconn();
                con.open();
    
    
                System.Data.DataTable dt = con.datatb("SELECT * FROM 部门列表");
    
    
    
                //int  count = dt.Columns.Count;
                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:\部门列表.xlsx");  //将其进行保存到指定的路径  
                excelWB.Close();
                excelApp.Quit();  //释放可能还没释放的进程  
                con.close();
                return dt.Rows.Count;
            }
    View Code


    我们定义一个自定义方法,用来创建,读取,写入EXCEL..

     

     

     

     

     

    然后我们前台可以放一个按钮

    <Button Content="导出到EXCEL" Height="23" HorizontalAlignment="Left" Margin="0,25,0,0" Name="button1" VerticalAlignment="Top" Width="82" Click="button1_Click" />

     

    相应的后台代码是

     

     private void button1_Click(object sender, RoutedEventArgs e)
            {
                DataToExcel1();
    
                MessageBox.Show("导出EXCEL文件成功!");
            }

    调用自定的方法,然后显示消息框。。

     

     

     


    恩。。然后就结束了。。

  • 相关阅读:
    前端开发笔记(2)css基础(上)
    前端开发笔记(1)html基础
    <Android 基础(三 十)> Fragment (3) ~ PreferenceFragment
    MyEclipse中搭建Struts2开发环境
    Android 投射工具和录屏工具
    似是而非的k=sqrt(n)
    算法:求比指定数大且最小的“不重复数”问题的高效实现
    巧用“异或”
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(5)
    12个滑稽的C语言面试问答——《12个有趣的C语言问答》评析(4)
  • 原文地址:https://www.cnblogs.com/Energy240/p/3436575.html
Copyright © 2011-2022 走看看