• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net读取excel文件的三种方法示例

    方法一:采用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;ioldds.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;jnewds.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();  
    }

    方法二:引用的com组件:Microsoft.Office.Interop.Excel.dll读取Excel文件

    首先是Excel.dll的获取,将Office安装目录下的Excel.exe文件Copy到DotNet的bin目录下,cmd到该目录下,运行 TlbImp EXCEL.EXE Excel.dll 得到Dll文件。

    在项目中添加引用该dll文件

    复制代码 代码如下:

    //读取EXCEL的方法    (用范围区域读取数据)  
    private void OpenExcel(string strFileName)  
    {  
    object missing = System.Reflection.Missing.Value;  
    Application excel = new Application();//lauch excel application  
        if (excel == null)  
    {  
        Response.Write("script>alert('Can't access excel')/script>");  
    }  
        else  
    {  
    excel.Visible = false;   excel.UserControl = true;  
    // 以只读的形式打开EXCEL文件  
    Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,  
    missing, missing, missing, true, missing, missing, missing, missing, missing);  
    //取得第一个工作薄
    Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);
    //取得总记录行数(包括标题列)
    int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数
    //int columnsint = mySheet.UsedRange.Cells.Columns.Count;//得到列数
    //取得数据范围区域(不包括标题列)
    Range rng1 = ws.Cells.get_Range("B2", "B" + rowsint);//item
    Range rng2 = ws.Cells.get_Range("K2", "K" + rowsint);  //Customer
    object[,] arryItem= (object[,])rng1.Value2;//get range's value
    object[,] arryCus = (object[,])rng2.Value2;
    //将新值赋给一个数组
    string[,] arry = new string[rowsint-1, 2];
    for (int i = 1; i = rowsint-1; i++)
    {
    //Item_Code列
    arry[i - 1, 0] =arryItem[i, 1].ToString();
    //Customer_Name列
    arry[i - 1, 1] = arryCus[i, 1].ToString();
    }
    Response.Write(arry[0, 0] + "/" + arry[0, 1] + "#" + arry[rowsint - 2, 0] + "/" + arry[rowsint - 2, 1]);
    }
     excel.Quit();excel = null;
    Process[] procs = Process.GetProcessesByName("excel");
    foreach (Process pro in procs)
    {
    pro.Kill();//没有更好的方法,只有杀掉进程
    }
    GC.Collect();
    }

    方法三:将Excel文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)。

    先引用命名空间:

    复制代码 代码如下:

    using System.Text;和using System.IO;  
    FileStream fs = new FileStream("d:\\Customer.csv", FileMode.Open, FileAccess.Read, FileShare.None);  
    StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding(936));  
    string str = "";  
    string s = Console.ReadLine();  
    while (str != null)  
    {      
        str = sr.ReadLine();  
        string[] xu = new String[2];  
        xu = str.Split(',');  
        string ser = xu[0];  
        string dse = xu[1];                 
        if (ser == s)  
        {   
            Console.WriteLine(dse);break;  
        }  
    }     
    sr.Close();

    另外也可以将数据库数据导入到一个txt文件,实例如下:

    复制代码 代码如下:

    //txt文件名  
    string fn = DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + "PO014" + ".txt";  
    OleDbConnection con = new OleDbConnection(conStr);  
    con.Open();  
    string sql = "select   ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM from TSD_PO014";          
    /OleDbCommand mycom = new OleDbCommand("select * from TSD_PO014", mycon);  
    //OleDbDataReader myreader = mycom.ExecuteReader();   //也可以用Reader读取数据  
    DataSet ds = new DataSet();  
    OleDbDataAdapter oda = new OleDbDataAdapter(sql, con);  
    oda.Fill(ds, "PO014");  
    DataTable dt = ds.Tables[0];  
    FileStream fs = new FileStream(Server.MapPath("download/" + fn), FileMode.Create, FileAccess.ReadWrite);  
    StreamWriter strmWriter = new StreamWriter(fs);    //存入到文本文件中  
    //把标题写入.txt文件中  
    //for (int i = 0; i dt.Columns.Count;i++)  
    //{  
    //     strmWriter.Write(dt.Columns[i].ColumnName + "   ");  
    //}  
    foreach (DataRow dr in dt.Rows)  
    {  
    string str0, str1, str2, str3;  
    string str = "|";  //数据用"|"分隔开  
    str0=dr[0].ToString();
    str1=dr[1].ToString();
    str2=dr[2].ToString();
    str3=dr[3].ToString();
    str4=dr[4].ToString().Trim();
    strmWriter.Write(str0);
    strmWriter.Write(str);
    strmWriter.Write(str1);
    strmWriter.Write(str);
    strmWriter.Write(str2);
    strmWriter.Write(str);
    strmWriter.Write(str3);
    strmWriter.WriteLine();//换行
    }
    strmWriter.Flush();
    strmWriter.Close();
    if(con.State==ConnectionState.Open)
    {
    con.Close();
    }

    您可能感兴趣的文章:
    • ASP.Net动态读取Excel文件最简方法
    • 如何在ASP.NET Core类库项目中读取配置文件详解
    • asp.net读取模版并写入文本文件
    • ASP.NET对txt文件相关操作(读取、写入、保存)
    • ASP.NET中上传并读取Excel文件数据示例
    • asp.net读取磁盘文件、删除实例代码
    • ASP.NET(C#)读取Excel的文件内容
    • asp.net 读取配置文件方法
    • C#/.NET读取或修改文件的创建时间及修改时间详解
    上一篇:使用asp.net MVC4中的Bundle遇到的问题及解决办法分享
    下一篇:asp.net导出excel的简单方法实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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