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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?