C#实战021:OleDb操作-新增Excel中的sheet工作表

      获取到lExcel中的sheet中的所有工作表,我们就可以来创建新的sheet工作表了,首先我们判断下Excel中的sheet中的所有工作表中是否存在我们需要创建的sheet工作表,如果没有的话我们在创建。

OleDbCommand cmd = myCon.CreateCommand();//创建工作表命令
string sheetName = "刀具预估数量";
if (tableName.Contains(sheetName))
{
    cmd.CommandText = "DROP TABLE 刀具预估数量";
    cmd.ExecuteNonQuery();// 执行创建sheet的语句
}
cmd.CommandText = "CREATE TABLE 刀具预估数量 ([序号] INTEGER, [刀号] VarChar,[刀具规格] VarChar,[1月] VarChar,[2月] VarChar,[3月] VarChar,[4月] VarChar,[5月] VarChar,[6月] VarChar,[7月] VarChar,[8月] VarChar,[9月] VarChar,[10月] VarChar,[11月] VarChar,[12月] VarChar)";
cmd.ExecuteNonQuery();

或者这样写也行 :

OleDbCommand cmd = new OleDbCommand();
string sheetName1 = "刀具预估数量";
if (tableName.Contains(sheetName1))
{
    string sqlDelete = @"DROP TABLE " + sheetName1 + ";";
    cmd = new OleDbCommand(sqlDelete, myCon);
    cmd.ExecuteNonQuery();// 执行创建sheet的语句
}
string sqlCreate = @"CREATE TABLE " + sheetName1 + @" ([序号] INTEGER)";
cmd = new OleDbCommand(sqlCreate, myCon);
cmd.ExecuteNonQuery();

 这个创建的新表只有表头而已,还没有任何的数据,不过我们可以通过获取这个表单的列数就可以知道我们是否创建成功了

string sheet4 = "select*from[刀具预估数量$]";//定义Excel工作表单
OleDbDataAdapter Command4 = new OleDbDataAdapter(sheet4, myCon);//从工作表中查询数据
DataSet sheetdata4 = new DataSet(); //创建数据集对象
Command4.Fill(sheetdata4, "刀具预估数量");//填充数据集 

int sheet4Columns = sheetdata4.Tables[0].Columns.Count; // 获取表的列数
int sheet4Rows = sheetdata4.Tables[0].Rows.Count; // 获取表的行数

Console.WriteLine(sheet4Rows);
Console.WriteLine(sheet4Columns);

下面是完整的代码: 

        public string ExcelName = @"C:\Users\敏\Desktop\test.xlsx";
        public void getExcel()
        {
            string strConn = "";
            List<string> tableName = new List<string>();
            if (File.Exists(ExcelName))//判断文件是否存在
            {
                FileInfo file = new FileInfo(ExcelName);//读取excel文件名
                string fileType = file.Extension;//提取excel文件名后缀,判断文件名类型
                //----------------------------获取Excel表格数据---------------------------
                if (fileType == ".xls")
                    //读取“.xls”时使用"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelPath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'" Office 07及以上版本 不能出现多余的空格 而且分号注意
                    strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + ExcelName + @";Extended Properties='Excel 8.0;HDR=Yes;IMEX=0'";
                else
                    //读取“.xlsx”时使用 "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelPath + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'"Office 07以下版本 
                    strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" + ExcelName + @";Extended Properties='Excel 8.0;HDR=Yes;IMEX=0'";
            }

            OleDbConnection myCon = new OleDbConnection(strConn);     //连接数据库    
            myCon.Open();//打开数据库
            DataTable dt = myCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //获取所有sheet的工作表
            foreach (DataRow row in dt.Rows)
            {
                string SheetTableName = row["TABLE_NAME"].ToString();
                if (SheetTableName.Contains("$") && SheetTableName.Replace("'", "").EndsWith("$"))  //过滤无效SheetName  
                {
                    SheetTableName = SheetTableName.Replace("'", "");
                    SheetTableName = SheetTableName.Substring(0, SheetTableName.Length - 1);
                    tableName.Add(SheetTableName);
                }
            }
            foreach (string sheet in tableName) //循环所有的sheet
            {
                Console.WriteLine(sheet);
            }
            OleDbCommand cmd = myCon.CreateCommand();//创建工作表命令
            string sheetName = "刀具预估数量";
            if (tableName.Contains(sheetName))
            {
                cmd.CommandText = "DROP TABLE 刀具预估数量";
                cmd.ExecuteNonQuery();// 执行创建sheet的语句
            }
            cmd.CommandText = "CREATE TABLE 刀具预估数量 ([序号] INTEGER, [刀号] VarChar,[刀具规格] VarChar,[1月] VarChar,[2月] VarChar,[3月] VarChar,[4月] VarChar,[5月] VarChar,[6月] VarChar,[7月] VarChar,[8月] VarChar,[9月] VarChar,[10月] VarChar,[11月] VarChar,[12月] VarChar)";
            cmd.ExecuteNonQuery();

            string sheet1 = "select*from[客户排配计划$]";//定义Excel工作表单
            OleDbDataAdapter Command1 = new OleDbDataAdapter(sheet1, myCon);//从工作表中查询数据
            DataSet sheetdata1 = new DataSet(); //创建数据集对象
            Command1.Fill(sheetdata1, "客户排配计划");//填充数据集 

            string sheet2 = "select*from[刀具寿命$]";//定义Excel工作表单
            OleDbDataAdapter Command2 = new OleDbDataAdapter(sheet2, myCon);//从工作表中查询数据
            DataSet sheetdata2 = new DataSet(); //创建数据集对象
            Command2.Fill(sheetdata2, "刀具寿命");//填充数据集 

            string sheet3 = "select*from[下折方案$]";//定义Excel工作表单
            OleDbDataAdapter Command3 = new OleDbDataAdapter(sheet3, myCon);//从工作表中查询数据
            DataSet sheetdata3 = new DataSet(); //创建数据集对象
            Command3.Fill(sheetdata3, "刀具寿命");//填充数据集 

            string sheet4 = "select*from[刀具预估数量$]";//定义Excel工作表单
            OleDbDataAdapter Command4 = new OleDbDataAdapter(sheet4, myCon);//从工作表中查询数据
            DataSet sheetdata4 = new DataSet(); //创建数据集对象
            Command4.Fill(sheetdata4, "刀具预估数量");//填充数据集 


            int sheet1Columns = sheetdata1.Tables[0].Columns.Count; // 获取表的列数
            int sheet1Rows = sheetdata1.Tables[0].Rows.Count; // 获取表的行数
            int sheet2Columns = sheetdata2.Tables[0].Columns.Count; // 获取表的列数
            int sheet2Rows = sheetdata2.Tables[0].Rows.Count; // 获取表的行数
            int sheet3Columns = sheetdata3.Tables[0].Columns.Count; // 获取表的列数
            int sheet3Rows = sheetdata3.Tables[0].Rows.Count; // 获取表的行数
            int sheet4Columns = sheetdata4.Tables[0].Columns.Count; // 获取表的列数
            int sheet4Rows = sheetdata4.Tables[0].Rows.Count; // 获取表的行数

            Console.WriteLine(sheet1Rows);   //输出测试
            Console.WriteLine(sheet1Columns);
            Console.WriteLine(sheet2Columns);
            Console.WriteLine(sheet2Rows);
            Console.WriteLine(sheet3Columns);
            Console.WriteLine(sheet3Rows);
            Console.WriteLine(sheet4Rows);
            Console.WriteLine(sheet4Columns);

猜你喜欢

转载自blog.csdn.net/kevinfan2011/article/details/84332101