C#对Excel的读取操作

     上周需新写一个程序,之前有类似的VB代码,于是想用C#写,导入Excel竟然成了一个障碍,上网找了找,一时半会还没解决,由于时间比较紧急,先放一边了,周末在家闲的没事,把问题给解决了。。。

     C#读取Excel数据与VB很不一样,VB是直接从Excel单元格中读取,如:Trim(xlworksheet.Cells(2, i).Value),C#是先把所有数据读出成一个表,然后再对该表做相应操作。。。

 

根据Excel文件名(完整路径)读取SheetName:

ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
/// Get SheetName from Excel file and put it into data table
/// </summary>
/// <param name="FileName">Filename with its absolute path</param>
/// <returns>Data table</returns>

public  DataTable GetSheetFromExcel( string  FileName)
ExpandedBlockStart.gifContractedBlock.gif
{
    Missing Miss 
= Missing.Value;

    DataTable dtSheet 
= new DataTable();
    
//Excel.Application xlApp 
    this.excel = new Excel.ApplicationClass();
    
//Excel.Workbook xlBook 
    this.workBook = excel.Workbooks.Open(FileName, Miss, Miss, Miss, Miss, Miss, Miss, Miss, Miss, Miss, Miss, Miss, Miss, Miss, Miss);

    dtSheet.Columns.Add(
"SheetName");

    
for (int i = 1; i <= workBook.Sheets.Count; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        dtSheet.Rows.Add(((Excel.Worksheet)workBook.Worksheets[i]).Name.ToString());
    }


    Quit();
    
this.workBook = null;
    
this.excel = null;
    
return dtSheet;
}

 

通过Excel文件名和SheetName读取Excel数据,返回一个表:

ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
/// Get data from Excel file and put it into data table by SheetName
/// </summary>
/// <param name="FileName"></param>
/// <param name="SheetName"></param>
/// <returns>DataTable</returns>

public  DataTable ExcelData( string  FileName,  string  SheetName)
ExpandedBlockStart.gifContractedBlock.gif
{
    DataSet dsExcel 
= new DataSet();
    DataTable DT 
= new DataTable();

    
string strXls = FileName.Substring(FileName.LastIndexOf("."+ 1).ToLower();
    
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileName + ";Extended Properties=Excel 8.0";
    OleDbConnection oleConn 
= new OleDbConnection(strConn);
    oleConn.Open();
    OleDbCommand myOleDbCommand 
= new OleDbCommand("select * from [" + SheetName + "$]", oleConn);
    OleDbDataAdapter dataAda 
= new OleDbDataAdapter(myOleDbCommand);
    oleConn.Close();
    dsExcel 
= new DataSet();
    dataAda.Fill(dsExcel, 
"[" + SheetName + "$]");
    DT 
= dsExcel.Tables[0];

    
return DT;
}

 

退出Excel:

ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
/// Quit excel file
/// </summary>

public   void  Quit()
ExpandedBlockStart.gifContractedBlock.gif
{
    
this.excel.Quit();
}

转载于:https://www.cnblogs.com/MaoBisheng/archive/2008/07/28/1255029.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值