Excel获取Sheet表名
2016-12-11 23:46
232 查看
背景:最近在做Excel的导入导出功能,收获了很多的知识,首先采用数据库链接方式,使用OLEDB链接接口访问Excel表中的数据。
链接字符串:
excel 2000 ~ 2003的 OleDb 连接串的格式如下:
Provider=Microsoft.Jet.OleDb.4.0;Data Source='excel文件路径';Extended Properties='Excel 8.0;HDR=YES'
Excel 2007之上链接字符串
Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + FilePath + "; Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1
在做完Excel的工作后,发布系统后遇到 未在本地注册Microsoft ACE.OLEDB.12.0应用程序。
解决步骤一、可能是因为缺少Microsoft Office Access 2007的一些引擎组件。所以得安装一下这个组件。
解决步骤二、然后在IIS对应的应用程序池上启用32为应用程序就好。
获取Excel的Sheet表名
Excel的数据链接connection打开后,使用GetOleDbSchemaTable方法,获取Excel的表名。
在获取表名的时候,有时候Excel只有一个表名,但是运行代码总是获取多个Sheet表名
解决办法
打开Excel的VB宏(art+F11)
插入窗体或者模块输入如下代码
Sub ShowAllNames()
For Each n In ThisWorkbook.Names
n.Visible = True
Next
End Sub
然后选择Excel的公式里面的名称管理器,打开名称公里器后,把多余的表名成删除即可。
链接字符串:
excel 2000 ~ 2003的 OleDb 连接串的格式如下:
Provider=Microsoft.Jet.OleDb.4.0;Data Source='excel文件路径';Extended Properties='Excel 8.0;HDR=YES'
Excel 2007之上链接字符串
Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + FilePath + "; Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1
在做完Excel的工作后,发布系统后遇到 未在本地注册Microsoft ACE.OLEDB.12.0应用程序。
解决步骤一、可能是因为缺少Microsoft Office Access 2007的一些引擎组件。所以得安装一下这个组件。
解决步骤二、然后在IIS对应的应用程序池上启用32为应用程序就好。
获取Excel的Sheet表名
Excel的数据链接connection打开后,使用GetOleDbSchemaTable方法,获取Excel的表名。
//获取Excel中的的数据 public static System.Data.DataTable getExcelData(string strFilePath,string conditionText) { string conStr = System.Configuration.ConfigurationManager.AppSettings["officeConnection"].ToString() + "Data Source=" + strFilePath + ";Extended Properties ='Excel 12.0;HDR=Yes;IME=1'"; System.Data.DataTable excelDt = new System.Data.DataTable(); using(OleDbConnection conn = new OleDbConnection(conStr)){ conn.Open();//链接打开,然后获取使用GetOleDbSchemaTable获取表名 System.Data.DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //包含excel中表名的字符串数组 string select = "select * from " + "[" + dtSheetName.Rows[0]["TABLE_NAME"].ToString() + "]" + conditionText+" ORDER BY 市直单位名称,定性指标名称"; OleDbCommand cmd = new OleDbCommand(select, conn); OleDbDataReader reader = cmd.ExecuteReader(); excelDt.Load(reader); reader.Close(); } return excelDt; }
在获取表名的时候,有时候Excel只有一个表名,但是运行代码总是获取多个Sheet表名
解决办法
打开Excel的VB宏(art+F11)
插入窗体或者模块输入如下代码
Sub ShowAllNames()
For Each n In ThisWorkbook.Names
n.Visible = True
Next
End Sub
然后选择Excel的公式里面的名称管理器,打开名称公里器后,把多余的表名成删除即可。
相关文章推荐
- 获取Excel的sheet名称和数量
- SQLServer获取Excel中所有Sheet
- 【ADO.Excel】ADO获取excel的Sheet集合
- C#获取Excel全部的sheet
- C#获取Excel中所有的Sheet名称
- 获取Excel中的Sheet的名称
- 解析SQLServer获取Excel中所有Sheet的方法
- SQLServer获取Excel中所有Sheet
- C#获取Excel中所有的Sheet名称
- python 获取excel文件的所有sheet名字
- SQLServer获取Excel中所有Sheet 收藏
- C#如何获取EXCEL所有的sheet表名?
- Excel导入时,如何获取第一个Sheet名称
- 解析SQLServer获取Excel中所有Sheet的方法
- C#获取Excel中所有的Sheet名称
- SQLServer获取Excel中所有Sheet
- .Net 获取 Excel 的各个Sheet 名字
- c#获取excel中的所以sheet名称
- 我的excel是2003版本的,里边有sheet1、sheet2两个工作表,当使用GetOleDbSchemaTable获取表Schema时,结果是4个,分别为: sheet1 sheet1$ sheet2 sheet2$
- phpexcel的getSheet(i)只能读取一页,怎么获取一个excel有多少分页?