首页 > 编程 > .NET > 正文

asp.net读取excel文件的三种方法示例

2024-07-10 12:43:33
字体:
来源:转载
供稿:网友

方法一:采用OleDB读取Excel文件

把Excel文件当做一个数据源来进行数据的读取操作,实例如下:
代码如下:
public DataSet ExcelToDS(string Path)  
{  
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";  
OleDbConnection conn = new OleDbConnection(strConn);  
conn.Open(); 
string strExcel = "";  
OleDbDataAdapter myCommand = null;  
DataSet ds = null;  
strExcel="select * from [sheet1$]";  
myCommand = new OleDbDataAdapter(strExcel, strConn);  
ds = new DataSet();  
myCommand.Fill(ds,"table1");  
return ds;  
}

对于Excel中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到

代码如下:
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
string tableName=schemaTable.Rows[0][2].ToString().Trim();

另外:也可进行写入Excel文件,实例如下:

代码如下:
public void DSToExcel(string Path,DataSet oldds)  
{  
//先得到汇总Excel的DataSet 主要目的是获得Excel在DataSet中的结构  
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ="+path1+";Extended Properties=Excel 8.0" ;  
OleDbConnection myConn = new OleDbConnection(strCon) ;  
string strCom="select * from [Sheet1$]";  
myConn.Open ( ) ;  
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom, myConn ) ;  
system.Data.OleDb.OleDbCommandBuilder builder=new OleDbCommandBuilder(myCommand);  
//QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。  
builder.QuotePrefix="["; //获取insert语句中保留字符(起始位置)  
builder.QuoteSuffix="]"; //获取insert语句中保留字符(结束位置)  
DataSet newds=new DataSet();  
myCommand.Fill(newds ,"Table1") ;  
for(int i=0;i<oldds.Tables[0].Rows.Count;i++)  
{  
//在这里不能使用ImportRow方法将一行导入到news中,  
//因为ImportRow将保留原来DataRow的所有设置(DataRowState状态不变)。  
//在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的DataRowState!=Added  
DataRow nrow=aDataSet.Tables["Table1"].NewRow();  
for(int j=0;j<newds.Tables[0].Columns.Count;j++)  
{  
nrow[j]=oldds.Tables[0].Rows[i][j];  
}  
newds.Tables["Table1"].Rows.Add(nrow);  
}  

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表