C#对Excel表的读取和写入


1.

using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Data;

public static DataTable myT;
public static DataSet myS;


2.读取方法:

 public static DataSet ExcelToDataTable(string strExcelFileName, string strSheetName )
        {
            //源的定义
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strExcelFileName + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
            //Sql语句
            //string strExcel = string.Format("select * from [{0}$]", strSheetName); 这是一种方法
            string strExcel = "select * from   [sheet1$]";
            //定义存放的数据表
            DataSet ds = new DataSet();
            //连接数据源
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            //适配到数据源
            OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, strConn);
            adapter.Fill(ds, strSheetName);
            conn.Close();
          //  return ds.Tables[strSheetName];
            return ds;
        }


读取使用:

	myS = ExcelToDataTable("D:/test.xls", "sheet1");
        myT = myS.Tables["sheet1"];
        String mystr = myT.Rows[0][0].ToString();
        Console.WriteLine("mystr:" + mystr);


3.写入方法:

	public static void DSToExcel(string Path,DataSet oldds) 
        { 
            //先得到汇总EXCEL的DataSet 主要目的是获得EXCEL在DataSet中的结构 
            string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + Path + ";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 = newds.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); 
            } 
            myCommand.Update(newds,"Table1"); 
            myConn.Close();  
        } 


写入使用:

	    myS = ExcelToDataTable("D:/test.xls", "sheet1");
            myT = myS.Tables["sheet1"];
            myT.Rows[0][0] = "ssssssssssss";
            DSToExcel("D:/test.xls", myS);


        





  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值