asp.net页面中如何获取Excel表的内容
作者:.net包子 发布时间:2022-11-18 11:40:31
标签:.net,excel
asp.net页面中如何获取Excel表的内容,具体内容介绍如下所示:
首先引用组件和命名空间
using Microsoft.Office.Interop.Excel;
using System.Data.OleDb;
然后把excel上传到指定路径
上传文件方法省略
最后把上传的excel变成Dataset (复制下面的方法就可以用了)
public DataSet seachExcel(string str) //参数为excel的路径
{
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string NameTable = "";
string ConText = "";
try
{
//获取Excel路径
FileInfo info = new FileInfo(str);
//获取文件的扩展名
string fileExt = info.Extension;
//判断用哪种连接方式
if (fileExt .ToLower() ==".xls")
{
ConText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + str + ";Extended Properties='excel 8.0;hdr=no;IMEX=1';Persist Security Info=false";
}
else if (fileExt.ToLower() == ".xlsx")
{
ConText = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + str + ";Extended Properties='excel 12.0 Xml;hdr=no;IMEX=1';Persist Security Info=False";
}
//连接excel
OleDbConnection conn = new OleDbConnection(ConText);
//打开excel
conn.Open();
dt=conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null );
if(dt!=null && dt.Rows .Count >0)
{
//获取sheet1表单的表名
NameTable = dt.Rows[0]["TABLE_NAME"].ToString();
//获取sheet2表单的表名
//NameTable = dt.Rows[1]["TABLE_NAME"].ToString();
}
string sql = "select * from [" + NameTable + "]";
da = new OleDbDataAdapter(sql, conn);
try
{
da.Fill(ds,NameTable); //把数据填充到Dataset
}
catch
{ }
conn.Close();
}
catch
{
}
return ds; //反回Dataset
}
asp.net读取excel表格数据的方法
其实读取Excel表格中的数据和读取数据库中的数据是非常类似的,因为在某种程度上Excel表格可以看成是一张一张的数据表。其二者的主要区别在于所使用的数据引擎不一样。
在本文的程序中,通过下列代码实现读取Excel表格数据,具体如下:
string strDataPathPhy = "c://1.xls";
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + strDataPathPhy + ";Extended Properties=Excel 8.0";
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [Sheet1$]";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
DataTable dtData = new DataTable();
myCommand.Fill(dtData);
myConn.Close();
由于可以把Excel看左一个数据库,里面的工作表就可以看左每张数据库表,所以也可以对搜索结果进行筛选,例如:
strCom = " SELECT * FROM [Sheet1$] WHERE column1 <> '' ";
这样dtData里面的数据就是[Sheet1$]表中column1不为空的全部数据了


猜你喜欢
- 一、题目描述题目:同步锁出现的目的就是为了解决多线程安全问题。同步锁的几种方式synchronized1、同步代码块2、同步方法jdk1.5
- 为了引入这个概率 首先从需求说起 即:现有某Activity专门用于手机属性设置 那么应该如何做呢? 根据已学知识 很快一个念头闪过 即:A
- 背景由于项目是采用java编写的,微信包括微信支付大都是php相关,于是微信支付官方文档对java的支持就不是很友好,在网上找了很多文章,基
- SpeSqliteManager4Android改动日志2023.2.14 完成SQLiteOpenHelper 2023.2.23 完成r
- 目录线程同步的几种方法:阻塞加锁(lock)Monitors互斥锁(Mutex)信号和句柄InterlockedReaderWriterLo
- 本文实例讲述了C++实现的链表类。分享给大家供大家参考。具体如下:#include <iostream>using namesp
- 一、场景笔者就Zuul网关下实现其负载均衡与熔断机制(雪崩)进行实践,前提是已经导入zuul相关依赖springboot版本:1.5.9.R
- 几乎所有运算符都只能操作“主类型”(Primitives)。例外是“=”、“= =”和“! =”,它们能操作所有对象。除此以外,String
- 我们知道,多线程是Android开发中必现的场景,很多原生API和开源项目都有多线程的内容,这里简单总结和探讨一下常见的多线程切换方式。我们
- ArratList 类:存放同一数据类型容器(只能为引用数据类型,因实际其内部存放的是地址)1.导入其所在包import java.util
- 1、每帧检查定义一个时间变量 timer,每帧将此时间减去帧间隔时间 Time.deltaTime,如果小于或者等于零,说明定时器到了,执行
- 如果出现:org.apache.ibatis.binding.BindingException: Invalid bound stateme
- JDK7前处理之前的练习,我们一直把异常抛出,而实际开发中并不能这样处理,建议使用try...catch...finally 代码块,处理异
- 本文实例讲述了java读取properties文件的方法。分享给大家供大家参考。具体实现方法如下:package com.test.demo
- 本文实例讲述了C#中事务处理和非事务处理方法。分享给大家供大家参考。具体如下:C#代码如下:String connectionString
- 一、Log4net官方网站:https://logging.apache.org/log4net/。下载二进制dll库:包中提供了针对各个版
- 本文实例讲述了Android实现音量调节的方法。分享给大家供大家参考。具体如下:main.xml布局文件:<?xml version=
- 嗯,就是BASE64,不用多想,本来计划是要跟上一篇字符串压缩一起写的,用来实现将一个文件可以用json或者text等方式进行接口之间的传输
- 本文实例讲述了java实现一次性压缩多个文件到zip中的方法。分享给大家供大家参考,具体如下:1.需要引入包:import java.io.
- 通用配置#下面介绍的整合JDBC和整合MyBatis都需要添加的实体类和配置数据库表#CREATE TABLE `user` ( `id`