有朋友问道:
代码
public
ArrayList ExcelSheetName(
string
filepath)
{
ArrayList al = new ArrayList();
string strConn;
strConn = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + filepath + " ;Extended Properties=\ " Excel 8.0 ;HDR = Yes;IMEX = 1 ;\ " ; " ;
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object [] { null , null , null , " TABLE " });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[ 2 ]);
}
return al;
}
{
ArrayList al = new ArrayList();
string strConn;
strConn = " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + filepath + " ;Extended Properties=\ " Excel 8.0 ;HDR = Yes;IMEX = 1 ;\ " ; " ;
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object [] { null , null , null , " TABLE " });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[ 2 ]);
}
return al;
}
这个方法获取的EXCEL表名是按字母顺序排列的,如果我要获得EXCEL的第一个工作表名,怎么做?
其实利用Framework提供的Excel 对象模型很容易解决这个问题,下面是邀月的测试过程及代码:
新建一控制台项目,添加两个dll
Microsoft.Office.Interop.Excel
Microsoft.VisualBasic
如图:
添加代码:
using
System;
using System.Collections.Generic;
using System.Text;
// add namespace
using Microsoft.Office.Interop.Excel;
namespace ReadFirstSheetNameDemo
{
public class Program
{
public static void Main( string [] args)
{
// Get Xth SheetName of Excel File
Console.WriteLine(GetFirstSheetNameFromExcelFileName( " C:\\test.xls " , 1 ));
Console.ReadKey();
}
public static string GetFirstSheetNameFromExcelFileName( string filepath, int numberSheetID)
{
if ( ! System.IO.File.Exists(filepath))
{
return " This file is on the sky?? " ;
}
if (numberSheetID <= 1 ) { numberSheetID = 1 ; }
try
{
Microsoft.Office.Interop.Excel.Application obj = default (Microsoft.Office.Interop.Excel.Application);
Microsoft.Office.Interop.Excel.Workbook objWB = default (Microsoft.Office.Interop.Excel.Workbook);
string strFirstSheetName = null ;
obj = (Microsoft.Office.Interop.Excel.Application)Microsoft.VisualBasic.Interaction.CreateObject( " Excel.Application " , string .Empty);
objWB = obj.Workbooks.Open(filepath, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing,Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing,Type.Missing, Type.Missing);
strFirstSheetName = ((Microsoft.Office.Interop.Excel.Worksheet)objWB.Worksheets[ 1 ]).Name;
objWB.Close(Type.Missing, Type.Missing, Type.Missing);
objWB = null ;
obj.Quit();
obj = null ;
return strFirstSheetName;
}
catch (Exception Err)
{
return Err.Message;
}
}
}
}
using System.Collections.Generic;
using System.Text;
// add namespace
using Microsoft.Office.Interop.Excel;
namespace ReadFirstSheetNameDemo
{
public class Program
{
public static void Main( string [] args)
{
// Get Xth SheetName of Excel File
Console.WriteLine(GetFirstSheetNameFromExcelFileName( " C:\\test.xls " , 1 ));
Console.ReadKey();
}
public static string GetFirstSheetNameFromExcelFileName( string filepath, int numberSheetID)
{
if ( ! System.IO.File.Exists(filepath))
{
return " This file is on the sky?? " ;
}
if (numberSheetID <= 1 ) { numberSheetID = 1 ; }
try
{
Microsoft.Office.Interop.Excel.Application obj = default (Microsoft.Office.Interop.Excel.Application);
Microsoft.Office.Interop.Excel.Workbook objWB = default (Microsoft.Office.Interop.Excel.Workbook);
string strFirstSheetName = null ;
obj = (Microsoft.Office.Interop.Excel.Application)Microsoft.VisualBasic.Interaction.CreateObject( " Excel.Application " , string .Empty);
objWB = obj.Workbooks.Open(filepath, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing,Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing,Type.Missing, Type.Missing);
strFirstSheetName = ((Microsoft.Office.Interop.Excel.Worksheet)objWB.Worksheets[ 1 ]).Name;
objWB.Close(Type.Missing, Type.Missing, Type.Missing);
objWB = null ;
obj.Quit();
obj = null ;
return strFirstSheetName;
}
catch (Exception Err)
{
return Err.Message;
}
}
}
}
结果:
参考资料:
http://www.cnblogs.com/downmoon/archive/2008/08/20/1272185.html
http://msdn.microsoft.com/zh-cn/library/aa168292%28office.11%29.aspx#EDAA