C#导入excel文件,获取所有Sheet表名,并查找满足条件的Sheet名

如题,在项目中导入excel文件时,往往只对其中的某个sheet表进行读取,或指定的某几个sheet表进行处理。

我的要求:导入excel文档,寻找有无名为5L的表,没有则找有无Sheet1的表,没有,则提示不存在正确命名的表或表不存在的提示框。代码如下:

目标函数中的主要代码如下:

OpenFileDialog file = new OpenFileDialog();
file.Filter ="Excel(*.xlsx)|*.xlsx|Excel(*.xlsm)|*.xlsm|Excel(*.*)|*.*";
string sheetname = "";

file.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); //获得桌面路径
if (file.ShowDialog() == DialogResult.Cancel) return;
var path = file.FileName;
string connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + path + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
                

DataTable tablename = GetExcelTableName(path,connString);
int i;
for (i = 0; i != tablename.Rows.Count; i++)
{
	if (tablename.Rows[i]["Table_Name"].ToString().Equals("Sheet1$")) sheetname = "Sheet1";
	else if (tablename.Rows[i]["Table_Name"].ToString().Equals("'5L$'")) sheetname = "5L"; 
}
if(i== tablename.Rows.Count+1) MessageBox.Show("未找到符合条件的表明,请确认是否命名正确");

其中,GetExcelTableName(path,connString)返回的内容如图所示:
在这里插入图片描述
此外,GetExcelTableName(path,connString)函数如下所示:

//jin 获取EXCEL的表 表名字列
public static DataTable GetExcelTableName(string p_ExcelFile,string connString)
{
    try
    {
        if (System.IO.File.Exists(p_ExcelFile))
        {
            OleDbConnection _ExcelConn = new OleDbConnection(connString);
            _ExcelConn.Open();
            DataTable _Table = _ExcelConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            _ExcelConn.Close();
            return _Table;
        }
        return null;
    }
    catch
    {
        return null;
    }
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值