ASP.Net 读取Excel 表单问题

nicaiwa 2014-06-12 03:13:01


有这样的一个Excel模板,把填好的数据导入到数据库


怎么读取填写的表格数据呢
...全文
208 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
孙大诚_SunRobin 2014-06-17
  • 打赏
  • 举报
回复
操作Eexcel推荐使用OpenXML,这个比较本质。
legequ_2587391358 2014-06-17
  • 打赏
  • 举报
回复
private void btn_Select_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Excel文件|*.xls";//设置打开文件筛选器 openFileDialog1.Title = "选择Excel文件";//设置打开对话框标题 openFileDialog1.Multiselect = false;//设置打开对话框中只能单选 if (openFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了文件 { txt_Path.Text = openFileDialog1.FileName;//在文本框中显示Excel文件名 CBoxBind();//对下拉列表进行数据绑定 } } private void btn_Txt_Click(object sender, EventArgs e) { //连接Excel数据库 OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0"); olecon.Open();//打开数据库连接 OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from [" + cbox_SheetName.Text + "$]", olecon);//从工作表中查询数据 DataSet myds = new DataSet();//实例化数据集对象 oledbda.Fill(myds);//填充数据集 StreamWriter SWriter = new StreamWriter(cbox_SheetName.Text + ".txt", false, Encoding.Default);//实例化写入流对象 string P_str_Content = "";//存储读取的内容 for (int i = 0; i < myds.Tables[0].Rows.Count; i++)//遍历数据集中表的行数 { for (int j = 0; j < myds.Tables[0].Columns.Count; j++)//遍历数据集中表的列数 { P_str_Content += myds.Tables[0].Rows[i][j].ToString() + " ";//记录当前遍历到的内容 } P_str_Content += Environment.NewLine;//字符串换行 } SWriter.Write(P_str_Content);//先文本文件中写入内容 SWriter.Close();//关闭写入流对象 SWriter.Dispose();//释放写入流所占用的资源 MessageBox.Show("已经将" + cbox_SheetName.Text + "工作表中的数据成功写入到了文本文件中", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void CBoxBind()//对下拉列表进行数据绑定 { cbox_SheetName.Items.Clear();//清空下拉列表项 //连接Excel数据库 OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0"); olecon.Open();//打开数据库连接 System.Data.DataTable DTable = olecon.GetSchema("Tables");//实例化表对象 DataTableReader DTReader = new DataTableReader(DTable);//实例化表读取对象 while (DTReader.Read())//循环读取 { string P_str_Name = DTReader["Table_Name"].ToString().Replace('$', ' ').Trim();//记录工作表名称 if (!cbox_SheetName.Items.Contains(P_str_Name))//判断下拉列表中是否已经存在该工作表名称 cbox_SheetName.Items.Add(P_str_Name);//将工作表名添加到下拉列表中 } DTable = null;//清空表对象 DTReader = null;//清空表读取对象 olecon.Close();//关闭数据库连接CodeGo.ent/ cbox_SheetName.SelectedIndex = 0;//设置下拉列表默认选项为第一项 }
mickwen10 2014-06-17
  • 打赏
  • 举报
回复
Spire.XLS 读取数据,不需要安装Office,有免费版。 http://www.e-iceblue.com/Introduce/excel-for-net-introduce.html
嘛哩嘛哩吽 2014-06-17
  • 打赏
  • 举报
回复
引用 4 楼 legequ_2587391358 的回复:
private void btn_Select_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Excel文件|*.xls";//设置打开文件筛选器 openFileDialog1.Title = "选择Excel文件";//设置打开对话框标题 openFileDialog1.Multiselect = false;//设置打开对话框中只能单选 if (openFileDialog1.ShowDialog() == DialogResult.OK)//判断是否选择了文件 { txt_Path.Text = openFileDialog1.FileName;//在文本框中显示Excel文件名 CBoxBind();//对下拉列表进行数据绑定 } } private void btn_Txt_Click(object sender, EventArgs e) { //连接Excel数据库 OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0"); olecon.Open();//打开数据库连接 OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from [" + cbox_SheetName.Text + "$]", olecon);//从工作表中查询数据 DataSet myds = new DataSet();//实例化数据集对象 oledbda.Fill(myds);//填充数据集 StreamWriter SWriter = new StreamWriter(cbox_SheetName.Text + ".txt", false, Encoding.Default);//实例化写入流对象 string P_str_Content = "";//存储读取的内容 for (int i = 0; i < myds.Tables[0].Rows.Count; i++)//遍历数据集中表的行数 { for (int j = 0; j < myds.Tables[0].Columns.Count; j++)//遍历数据集中表的列数 { P_str_Content += myds.Tables[0].Rows[i][j].ToString() + " ";//记录当前遍历到的内容 } P_str_Content += Environment.NewLine;//字符串换行 } SWriter.Write(P_str_Content);//先文本文件中写入内容 SWriter.Close();//关闭写入流对象 SWriter.Dispose();//释放写入流所占用的资源 MessageBox.Show("已经将" + cbox_SheetName.Text + "工作表中的数据成功写入到了文本文件中", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } private void CBoxBind()//对下拉列表进行数据绑定 { cbox_SheetName.Items.Clear();//清空下拉列表项 //连接Excel数据库 OleDbConnection olecon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txt_Path.Text + ";Extended Properties=Excel 8.0"); olecon.Open();//打开数据库连接 System.Data.DataTable DTable = olecon.GetSchema("Tables");//实例化表对象 DataTableReader DTReader = new DataTableReader(DTable);//实例化表读取对象 while (DTReader.Read())//循环读取 { string P_str_Name = DTReader["Table_Name"].ToString().Replace('$', ' ').Trim();//记录工作表名称 if (!cbox_SheetName.Items.Contains(P_str_Name))//判断下拉列表中是否已经存在该工作表名称 cbox_SheetName.Items.Add(P_str_Name);//将工作表名添加到下拉列表中 } DTable = null;//清空表对象 DTReader = null;//清空表读取对象 olecon.Close();//关闭数据库连接CodeGo.ent/ cbox_SheetName.SelectedIndex = 0;//设置下拉列表默认选项为第一项 }
根据这个 ,再读取你需要的数据到Table就行啦
xiaohuzihei 2014-06-17
  • 打赏
  • 举报
回复
读取指定的 单元格。
mayishuo_0226 2014-06-12
  • 打赏
  • 举报
回复
这好似也没啥规律啊?用aspose.cells 有指定行列属性读取吧!
changjiangzhibin 2014-06-12
  • 打赏
  • 举报
回复
使用Aspnet.dll 从指定行列读取
冰岛男孩 2014-06-12
  • 打赏
  • 举报
回复
最简单的方法如下 string conStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=YES;IMEX=1'", Path + "\\" + NewFileName + ext); string sql = "select * from [Sheet1$]"; using (OleDbConnection con = new OleDbConnection(conStr)) { using (OleDbDataAdapter da = new OleDbDataAdapter(sql, con)) { DataTable dt = new DataTable() da.Fill(dt); foreach (DataRow dr in dt.Rows) { //..... } string ii = dt.Rows.Count.ToString(); GlobalClass.PopInfo("数据已成功导入 " + ii + " 条数据!", Request.Url.ToString(), 0); } }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧