• 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();
            }
  • 相关阅读:
    c++ 指定目录下的文件遍历
    c++ 实现键盘钩子
    c++ 用模板类实现顺序储存的线性表
    c++ 递归算法实现排列组合
    matlab 基础知识
    QT 给工程添加图片
    QT5.9 QString和字符串转换的乱码问题
    【内核】——进程3,内核同步
    Java多线程——Thread的native底层实现
    【内核】——文件和文件系统的内部结构4 系统调用的实现
  • 原文地址:https://www.cnblogs.com/enych/p/8330949.html
Copyright © 2020-2023  润新知