zoukankan      html  css  js  c++  java
  • 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;";
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
                conn.Open();
                string strExcel = "";
                System.Data.OleDb.OleDbDataAdapter myCommand = null;
                DataSet ds = null;
                strExcel = "select * from [sheet1$]";
                myCommand = new System.Data.OleDb.OleDbDataAdapter(strExcel, strConn);
                ds = new DataSet();
                myCommand.Fill(ds, "table1");
                return ds;
            }
            //对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到  
            public DataTable ExcelToDT(string Path)
            {
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
                System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
                DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                string tableName = schemaTable.Rows[0][2].ToString().Trim();
                return schemaTable;
            }
    
            //写入excel
            public 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";
                System.Data.OleDb.OleDbConnection myConn = new System.Data.OleDb.OleDbConnection(strCon);
                string strCom = "select * from [Sheet1$]";
                myConn.Open();
                System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, myConn);
                System.Data.OleDb.OleDbCommandBuilder builder = new System.Data.OleDb.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();
            }
  • 相关阅读:
    android 振动
    linux实用命令-查看文件夹的大小
    无显示屏的开发板抓屏
    传感器Sensor的使用-距离感应(听筒模式)
    4.4原生应用获取通话状态
    git服务器的使用
    (转)浅谈ANR及log分析ANR
    ubuntu下从软件中心安装软件时的软件缓存目录
    mysql————Innodb的可重复读的情况下如何避免幻读?
    MyISAM和Innodb的区别
  • 原文地址:https://www.cnblogs.com/enych/p/8330949.html
Copyright © 2011-2022 走看看