C# 创建Excel,读取mdb数据库,写入Excel数据,获取mdb中所有表格名字,选择多个文件

版权声明:转载请注明 https://blog.csdn.net/qq_34720818/article/details/86624325

C# 创建Excel,读取mdb数据库,写入Excel数据,获取mdb中所有表格名字,选择多个文件

1、创建Excel表
使用OleDbCommand类执行SQL语句即可,代码如下

      /// <summary>
        /// 创建表格
        /// </summary>
        /// <param name="excelName">创建的Excel表名</param>
        public void createExcel(string excelName)
        {
            string exportDataSql = "CREATE TABLE Test ([测量点号] VarChar)";//创建表格的SQL语句,其中Test为excel中的sheet名,[测量点号] VarChar为表格字段名和类型
            string DataPath = "C:\\Users\\njtq\\Desktop\\convert\\转换后\\";//创建excel文件的路径
            String sConnectionString = "Provider=Microsoft.ACE.OleDB.15.0;" +
"Data Source=" + DataPath + ""+excelName+".xls;" +"Extended Properties=Excel 8.0;";
            OleDbConnection cn = new OleDbConnection(sConnectionString);//连接Excel操作
            cn.Open();
            cmdTable = new OleDbCommand(exportDataSql, cn);
            ////也可以使用下面两条语句代替上一条语句
            //cmdTable =cn.CreateCommand();
             //cmdTable.CommandText = exportDataSql;
            cmdTable.ExecuteNonQuery();//执行SQL
        }
    }

2、读取mdb数据库
使用OleDbConnection连接mdb数据库,同样使用OleDbCommand类执行SQL语句,得到OleDbDataReader数据,再将其转为DataTable数据进行操作,代码如下:

String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sourceFile + ";";//sourceFile 为需要操作的mdb数据的路径
OleDbConnection conn = new OleDbConnection(connectionString);//连接mdb数据库
conn.open();
OleDbCommand cmd = conn.CreateCommand();//获取OleDbCommand 
string sql = "select * from " + TableName;//sql语句,其中TableName为操作的mdb中的一张表格的名称
cmd.CommandText = sql;
OleDbDataReader dataReader = cmd.ExecuteReader();//执行sql语句
DataTable table = new DataTable();
table.Load(dataReader );//OleDbDataReader 转为DataTable
string data = "";
data = table.Rows[i]["管径"].ToString();//获取表格中第i行的“管径字段”所对应单元格的数据
 conn.Close();

3、向Excel中写入数据,与创建Excel表格的操作类似

 string sql = "INSERT INTO " + fileSheetName +" VALUES('" + interData + "');//插入sql语句,其中fileSheetName 为你连接的Excel中的一个sheet名,interData为要插入的数据。注意插入的数据个数一定要和字段的个数相同,同时插入的没个verCahr数据都要加上单引号'';
cmd.CommandText = sql;//cmd为OleDbCommand类型,得到该对象方法操作如上面两个方法一样
cmd.ExecuteNonQuery();//执行插入语句即可

4、获取mdb中所有表格的名字

public List<string> getAllTableName(OleDbConnection con)
        {
            List<string> AllTableName = new List<string>();
            DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
            for (int i = 0, maxI = dt.Rows.Count; i < maxI; i++)
            {
                // 获取第i个Access数据库中的表名
                string sTempTableName = dt.Rows[i]["TABLE_NAME"].ToString();
                AllTableName.Add(sTempTableName);
            }
            return AllTableName;
        }

5、选择多个文件
使用OpenFileDialog类

 OpenFileDialog OpenDg = new OpenFileDialog();
 OpenDg.Title = "打开文件";
 OpenDg.Multiselect = true;//控制是否能选择多个文件
 OpenDg.Filter = "mdb文件(*.mdb)|*.mdb";//文件类型筛选
 OpenDg.RestoreDirectory = true;//是否记忆上次打开的路径
 if (OpenDg.ShowDialog() == DialogResult.OK)//该语句才执行代开选择框
 {
 foreach (string file in OpenDg.FileNames)//通过foreach 遍历选择的所有文件的路径
     {
        //file即为选择文件的路径+文件名
         int position = file.LastIndexOf("\\");//获取最后一个\\字符的索引
         fileName = file.Substring(position + 1);//获取选择的文件名
     }
 }

猜你喜欢

转载自blog.csdn.net/qq_34720818/article/details/86624325