c#读取Excel的第一个Sheet表
有朋友问道:
代码
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