zoukankan      html  css  js  c++  java
  • excel导入数据库

            日常工作中,感觉一些基础知识需要做下笔记,可能是刚毕业的缘故吧,还保持着做笔记的习惯,但根据以往经验,纸质笔记最多保持一年,过后想找已是难过登天。电子版笔记感觉很不错,尤其是发布到网络中。笔记内容是本人遇到的感觉可能会有些用的东西,很是琐碎,记录在博客园中,仅供学习参考。

    1、将数据库中的内容显示到一个窗体界面中,此次将它显示到datagrid中。

    思路:可以说没有什么思路,很简单。读取数据库中某个表格的内容,将其放到dataset中,然后将其作为datagrid的源即可。

    贴代码:

    string sqlstr = "server=192.168.100.46;database=PublicProgram;User ID=sa;pwd=typt";
    using (SqlConnection sqlconn = new SqlConnection(sqlstr))
                {
                    using (SqlCommand sqlcomm = sqlconn.CreateCommand())
                    {
                        sqlcomm.CommandText = "select top 3 * from Transcript order by ExamTime desc ";
                        DataSet dt = new DataSet();
                        SqlDataAdapter adapter = new SqlDataAdapter(sqlcomm);
                        adapter.Fill(dt);
                        DataTable ds = dt.Tables[0];
                        this.dataGrid1.ItemsSource = dt.Tables[0].DefaultView;
                    }
                }

    2、获取excel表格中的内容,此次将excel中的内容保存数据库中

    思路:获取excel的路径,通过OleDB方式获取excel文件的数据,保存到dataset中。接着可以单个获取dataset中值或者导入到数据库中。

    获取excel的路径:

    OpenFileDialog openFileDialog = new OpenFileDialog();
    
                DialogResult result = openFileDialog.ShowDialog();
                if (result ==System.Windows .Forms .DialogResult .Cancel )
                {
                    return;
                }
                string fileName = openFileDialog.FileName;
                tbPath.Text = fileName;

    通过OleDB方式获取excel文件,并保存到dataset

    string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + "Extended Properties="Excel 12.0;HDR=YES;IMEX=1"";
    
                OleDbConnection OleConn = new OleDbConnection(strConn);
                OleConn.Open();
                string sql = string.Format("SELECT * FROM [{0}$]", sheetName);
                OleDbDataAdapter OleDbDAdap = new OleDbDataAdapter(sql, OleConn);
                DataSet ds = new DataSet();
                OleDbDAdap.Fill(ds, sheetName);
                OleConn.Close();

    获取dataset后,可以将它存取到数据库中,也可以从其中得到需要的数据信息
    存到数据库中:

    using (SqlBulkCopy bcp = new SqlBulkCopy(connectionString))
                    {
                        //bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
                        bcp.BatchSize = 100; //每次传输的行数
                        bcp.NotifyAfter = 100; //每次提示的行数
                        bcp.DestinationTableName = "[PublicProgram].[dbo].[User]";//目标表
                        bcp.WriteToServer(ds.Tables[0]);
                    }

    如果获取单个数据,举例简单说明一下:

    int length = ds.Tables[0].Rows.Count;
                int len = ds.Tables[0].Columns.Count;
                id = Convert.ToInt32(ds.Tables[0].Rows[length-1][len-2]);
                pwd = Convert.ToInt32(ds.Tables[0].Rows[1][1]);
                for (int i = 0; i < length - 1; i++)
                {
                    id = Convert.ToInt32(ds.Tables[0].Rows[i][0]);
                    pwd = Convert.ToInt32(ds.Tables[0].Rows[i][1]);
                }


    3、wpf设置datagrid的一些属性:

    在第一道题中写到了将dataset作为datagrid的数据源,这里仅介绍在wpf中datagrid的一些用法。

    改变datagrid的标题行的一些属性:

    <DataGrid.ColumnHeaderStyle>
                                    <Style TargetType="DataGridColumnHeader">
                                        <Setter Property="Background" Value="black"/>   
                                        <Setter Property="Foreground" Value="white"/>
                                        <Setter Property="FontSize" Value="20" />
                                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
                                        <Setter Property="VerticalContentAlignment" Value="Center"/>
                                    </Style>
                                </DataGrid.ColumnHeaderStyle>

    将标题绑定到一些数据源中,设置其中的内容居中

    首先需要将控件设定样式:

    <Page.Resources >
            <ResourceDictionary >
                <Style x:Key="dgCell" TargetType="TextBlock">
                    <Setter Property="TextAlignment" Value="Center"/>
                </Style >
            </ResourceDictionary >
        </Page.Resources >

    然后调用:

    <DataGrid.Columns >

      <DataGridTextColumn Header="成绩" Width="50" Binding="{Binding Path=Score}" IsReadOnly="True" ElementStyle="{StaticResource dgCell}"/>
      <DataGridTextColumn Header="项目" Width="50" Binding="{Binding Path=Curriculum}" IsReadOnly="True" ElementStyle="{StaticResource dgCell}"/>

    </DataGrid.Columns >

       

    笔停此处。继续学习,继续前行。

    /// <summary>
            /// 查询excel电子表格添加到dataset
            /// </summary>
            /// <param name="filenameurl"></param>
            /// <returns></returns>
            public DataSet ExecleDs(string filenameurl)
            {
                string strConn = "Provider=Microsoft.ACE.OleDb.12.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 12.0; HDR=YES; IMEX=1'";
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                DataSet ds = new DataSet();
                string strSql = string.Format("SELECT * FROM [{0}$]", "Sheet1");
                OleDbDataAdapter odda = new OleDbDataAdapter(strSql, conn);
                odda.Fill(ds, "hou");
                return ds;
            }
    最新博客信息,请关注“小项目笔记”公众号;
  • 相关阅读:
    启动Docker容器
    Docker 删除容器
    11.18数据库认证
    10.17权限认证
    9.16角色认证
    8.13数据库认证
    6.11Realm简介
    5.8认证流程分析
    4.7固定信息认证
    20张图表达程序员的心酸
  • 原文地址:https://www.cnblogs.com/ysyn/p/3229651.html
Copyright © 2011-2022 走看看