/*-----------------------------------------------------------------------------*/
Author:RXW
Date:2004-12-10
/*-----------------------------------------------------------------------------*/
using System;
using System.Reflection;
using Excel;
namespace ExcelCommon
{
/// <summary>
/// EXCEL 读取操作
/// </summary>
public class XlsRead
{
public XlsRead()
{
//
//
//
}
/// <summary>
/// Open Excel File
/// </summary>
/// <param name="XlsFileName">Full Path Name</param>
public void Open(string XlsFileName)
{
if(string.Empty == XlsFileName)return;
m_ExApp = new ApplicationClass();
m_ExApp.Visible = false;
m_ExApp.ScreenUpdating = false;
object [] vData = new object[]{0,true,null,null,null,null,null};
Workbooks wbs=m_ExApp.Workbooks;
m_WorkBook = (Workbook)wbs.GetType().InvokeMember(
"open",System.Reflection.BindingFlags.InvokeMethod,
null,wbs,new object []{XlsFileName,vData});
}
/// <summary>
/// Release COM
/// </summary>
public void Dispose()
{
if(null != m_ExApp)
{
m_ExApp.Quit();
m_ExApp = null;
}
}
private ApplicationClass m_ExApp = null;
/// <summary>
/// Excel File
/// </summary>
public string XlsFile
{
get
{
return m_XlsFile;
}
set
{
m_XlsFile=value;
}
}
private string m_XlsFile=string.Empty;
public void Open()
{
Open(XlsFile);
}
private Workbook m_WorkBook=null;
/// <summary>
/// Find Data Cell By Position Info
/// </summary>
/// <param name="XlsTableName">Worksheet(Table) Name</param>
/// <param name="FindWhat">KeyWords</param>
/// <param name="FullText">String of Data Content</param>
/// <param name="PosX">Row Index</param>
/// <param name="PosY">Column Index</param>
/// <returns></returns>
public bool FindCell(string XlsTableName,string FindWhat,ref string FullText,ref int PosX,ref int PosY)
{
if(string.Empty == FindWhat)return false;
if(null == m_WorkBook)return false;
foreach(Worksheet sht in m_WorkBook.Worksheets)
{
if(XlsTableName == sht.Name)
{
object [] vData = new object[]{FindWhat,null,XlFindLookIn.xlValues,XlLookAt.xlPart};
Range rg = sht.UsedRange;
Range _rg =(Range)rg.GetType().InvokeMember(
"find",System.Reflection.BindingFlags.InvokeMethod,
null,rg,new object[]{vData});
if(null != _rg)
{
PosX = _rg.Row;
PosY = _rg.Column;
FullText = _rg.Text.ToString();
}
return true;
}
}
return false;
}
}
}