`
izuoyan
  • 浏览: 9220128 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

C# 读取Excel中指定的Sheet名称或索引

阅读更多

public DataTable ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataTable dt = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
dt = new DataTable();
myCommand.Fill(dt);
return dt;
}



但是上面的代码只是查询sheet1$表,如果用户把sheet表名改了就是报下面的错:

'sheet1$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。


那么怎样才能获得Excel中各个sheet的名称呢?这样就能动态的选中返回哪个sheet的数据,即使用户更改了名称也不怕,完全可以把所有sheet的名称列出来供用户选择:

那么下面就把解决问题的代码列出来,主要用到了OleDbConnection.GetOleDbSchemaTable()方法



/// <summary>
/// 根据excel的文件的路径提取其中表的数据
/// </summary>
/// <param name="Path">Excel文件的路径</param>
private void GetDataFromExcelWithAppointSheetName(string Path)
{
//连接串
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);

conn.Open();

//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等
DataTable dtSheetName = conn.GetOleDbSchemaTable (OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });

//包含excel中表名的字符串数组
string[] strTableNames = new string[dtSheetName.Rows.Count];
for (int k = 0; k < dtSheetName.Rows.Count; k++)
{
strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
}

OleDbDataAdapter myCommand = null;
DataTable dt = new DataTable();

//从指定的表明查询数据,可先把所有表明列出来供用户选择
string strExcel = "select * from [" + strTableNames[0] + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
dt = new DataTable();
myCommand.Fill(dt);

dataGridView1.DataSource = dt; //绑定到界面
}
分享到:
评论

相关推荐

    c#读取excel文件

    4. 获取工作表:Excel文件中的每张工作表对应一个Worksheet对象,可以通过索引或名称获取。 ```csharp Excel.Worksheet worksheet = workbook.Sheets[1]; // 通过索引 // 或 Excel.Worksheet worksheet = workbook....

    winform 向现有的excel中根据DataTable添加sheet,并读取出所有sheet的名称

    读取Excel中所有sheet的名称,可以这样实现: ```csharp Excel.Worksheet currentSheet; for (int i = 1; i ; i++) { currentSheet = workbook.Sheets[i]; string sheetName = currentSheet.Name; Console....

    C#把excel中的数据读入到datatable中去

    本教程将深入讲解如何使用C#将Excel中的数据读入到DataTable中。 首先,我们需要一个库来读取Excel文件。Microsoft Office Interop库是原生支持的选项,但它需要Office安装在开发机器上,这在服务器环境中可能不...

    c# unity 读取excel 带案例

    本案例将探讨如何在Unity环境中使用C#读取Excel文件,并提供一个实际的案例。 首先,我们需要知道Unity不直接支持读取Excel文件,因为它是为游戏开发设计的,而不是作为办公软件。但是,我们可以借助第三方库如NPOI...

    C# datagridview 读取和导出EXCEL

    本话题主要关注如何使用C#操作Excel文件,包括读取数据和导出数据到Excel,这对于数据分析、报告生成以及数据交换等场景非常实用。 首先,读取Excel数据通常需要借助第三方库,因为.NET框架的标准库并不直接支持...

    NPOI读取Excel,并添加操作Excel增加一列

    在Excel中,列是由字母表示的,例如"A"代表第一列,"B"代表第二列,以此类推。因此,我们需要确定新列的位置,然后创建一个新的`IColumn`对象。下面是如何在最后一列之后添加新列的示例: ```csharp // 获取最后一...

    C#编写的读取任何版本的Excel文件,并写入二维数组中。

    - 使用`HSSFWorkbook`的`GetSheetAt()`或`XSSFWorkbook`的`GetSheet()`方法获取指定索引的Sheet。 - 通过`ISheet`接口的`GetRow()`方法获取行,再通过`IRow`的`GetCell()`方法获取单元格内容。 4. **二维数组存储...

    c# NPOI读取Excel源代码

    3. **获取工作表**:工作簿中可以有多个工作表,通过索引或名称获取。 ```csharp XSSFSheet sheet = (XSSFSheet)workbook.GetSheetAt(0); // 获取第一个工作表 XSSFSheet sheetByName = (XSSFSheet)workbook....

    C#读取EXCEL并导入到数据库中,可数据删除、预览。

    `创建了一个工作簿对象,然后`ISheet sheet = workbook.GetSheetAt(index)`用于获取指定索引的工作表。 5. **导入到数据库**:导入数据到数据库通常涉及到ADO.NET或者ORM框架如Entity Framework。首先,你需要建立...

    读取Excel文件将数据存入map集合

    - 数据导入导出:将Excel中的数据导入数据库或其他系统。 2. **功能扩展**: - 支持更多类型的Excel文件,例如`.xlsx`格式。 - 支持更多的单元格类型,如富文本类型。 - 支持更复杂的错误处理机制,比如自定义...

    C#读取电子表格EXCEL

    Excel是用于数据分析、报告制作和信息管理的重要工具,因此掌握C#读取Excel的技巧对程序员来说非常有价值。 首先,我们要了解C#读取Excel文件的基本步骤。通常,这需要借助.NET Framework提供的Microsoft.Office....

    C_Excel_c#excel_C#_c#excel_Excel.dll_c需要操作excel_

    这个标题和描述指出,我们将讨论如何在C#中进行Excel的读写操作,并且提到了一个名为“Excel.dll”的库,这可能是诸如EPPlus、NPOI或Microsoft.Office.Interop.Excel等库的引用。 首先,让我们深入了解一下C#操作...

    C#读写Excel文件

    本知识点主要探讨如何使用C#读取和写入Excel 2010文件,以及涉及到的相关技术和库。 首先,C#本身并不直接支持读写Excel文件,但可以通过第三方库来实现。其中最常用的是Microsoft的`Microsoft.Office.Interop....

    C#实现EXCEL公式编辑

    使用`Worksheets`集合访问工作表,并通过索引或名称选择。 ```csharp Worksheet worksheet = workbook.Worksheets[1]; // 选择第一个工作表 // 或者 worksheet = workbook.Worksheets["Sheet1"]; // 选择名为...

    基于npoi的Excel读取 转换成Datatable(含源码)

    这里`DateTime1900ToDateTime`是一个转换方法,用来将Excel中的日期转换为.NET中的DateTime对象。 5. 完成后,记得关闭工作簿和流: ```csharp workbook.Close(); fileStream.Close(); ``` 通过以上步骤,你就...

    c#调用excel实例

    本实例主要探讨如何在C#项目中调用Excel,为开发者提供一种有效的方法来读取、写入或操作Excel文件。 首先,我们要理解C#调用Excel的基本原理。这通常涉及到Microsoft Office的COM(Component Object Model)组件,...

    C#中用于读取office文件类型的插件(doc、xlsx等)

    2. **获取工作表**:通过工作簿对象获取工作表,通常是通过索引或工作表名称。 ```csharp var sheet = workbook.GetSheetAt(0); // 获取第一个工作表 // 或者 var sheet = workbook.GetSheet("Sheet1"); // 通过...

    c#Excel导入导出

    在.NET开发环境中,C#语言提供了丰富的库来处理Excel数据的导入与导出。NPOI是一个非常流行的开源库,它允许开发者在C#中处理Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。本示例将详细介绍如何在C#中...

    2012,我的C#全能Excel操作(无需Office,不使用XML)

    2012,我的C#全能Excel操作(无需Office,不使用XML) 有时候,Excel操作会成为我们程序员的痛处。 COM的方式处理?杀进程?需要安装Office? No,nononono!这些都不想了。 我只要OleDb就够用了。 读取内容产生...

    C#操作Excel表格-简单读写

    3. **操作工作表**:`Workbook`对象包含多个`Worksheet`,可以通过索引或名称访问它们。例如,`Worksheets[1]`或`Worksheets["Sheet1"]`。 4. **读取单元格数据**:使用`Range`对象表示单元格或单元格区域。`Range....

Global site tag (gtag.js) - Google Analytics