在一次将Excel文件导入到DataGridView中时发现以前的代码都是讲excel中的表名写死了的,都是Sheet1$,要是想导入第二个的话,那就是Sheet2$了,写死了的话,就没有办法将Excel中的第二个表格导入了。于是就做了一个下拉列表,在里面写了N多个Sheet1$、Sheet2$、Sheet3$......SheetN$,当时自以为把问题完美的解决了,但是后来发现原来Excel文件中的表格也是可以自己命名的,谁规定非得叫Sheet1$之类的了?我完全可以叫他xiaoqiang啊,于是问题出来了,之前的办法还是没有从根本上解决这个问题。后来就想,应该先把导入的Excel文件中的所有表格的名字都取到,然后绑定到一个下拉列表中,在让用户自己去选择要导入那个表里面的数据,这样一来的话,问题不就解决了吗?于是上网找资料,还真被我找到了。下面把代码贴出来:
这个方法是用来获取导入的那个Excel文件中的所有的表的名称的,他返回的是一张表,这张表中存储的关于这个Excel中的所有表的相关信息,狠丰富的,里面有一个字段叫做Table_Name,这个字段存储的就是Excel中所有表的名称,我们返回这个表格以后,就可以用一个循环来获取这个Table_Name字段中的数据了不是?这个方法的参数是要导入的那个Excel文件的路径,当我们用OpenFileDialog控件打开Excel文件的时候,用它的对象的FileName属性就能获取路径了,这个做开发的地球人都知道吧?
当把上面的方法写在类中以后,就是去调用它了,我们在OpenFileDialog 控件的打开事件中去调用上面的这个方法就可以了。
OpenFileDialog openFileDialog = new OpenFileDialog(); //在绑定前先将下拉列表清空 cboExcelName是下拉列表的名称,即:comBobox控件 //然后我们用一个循环将上面那个方法中返回来的table中的Table_Name这个字段的数据读取出来,绑定到控件上。
嗯,做到这里就OK了,这样就顺利的把Excel中的表名都获取到了,也绑定到了comBobox控件中了,只要用户选择一下要导入哪个表的数据,那就可以直接导入相应的表中的数据了。 |
|
来自: albert_wei > 《C#》