客户有带样式的excel文件,通过一般的
=====================================
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = "+fileName+";Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;

string strCom = " SELECT * FROM ["+tbxSheetName.Text.Trim()+"$]" ;
myConn.Open ( ) ;
////打开数据链接,得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
////创建一个 DataSet对象
myDataSet = new DataSet ( ) ;
////得到自己的DataSet对象
//myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
myCommand.Fill(myDataSet,"test");
////关闭此数据链接
myConn.Close ( ) ;
=====================================
无法读出某些cell的值,例如里面的一些浮点性数据,所以宣布放弃此方法,所以想试一下office的excel组件,从网上找了几篇文章,还是没弄懂怎么读出某个cell的值。

解决方案 »

  1.   

    先引用 Microsoft Excel Library ...Excel.Application xls = new Excel.Application();
    xls.Workbooks.Open(....);
    string s = xls.Workbooks[0].Worksheets[0].Cells[1,1].Text ;
      

  2.   

    public DataTable GetDataFromExcel(string myFilePath)
    {
    string strConn;
    StringBuilder strBuilder = new StringBuilder(myFilePath);
    strBuilder.Replace("\\","\\\\");

    myFilePath = strBuilder.ToString();

    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source=" + myFilePath +";"+
    "Extended Properties=Excel 8.0;";


    connForExcel.ConnectionString = strConn; string[] sheetName = GetSheetItem(myFilePath); // conn = new OleDbConnection(strConn);
    OADPForExcel.SelectCommand.Connection = connForExcel;
    OADPForExcel.SelectCommand.CommandText = "SELECT * FROM ["+ sheetName[0] +"$]";
    //myCommand = new OleDbDataAdapter("SELECT * FROM [查询1$]", strConn);
    DataTable dt = new DataTable("IMP");
    try
    {
    OADPForExcel.Fill(dt);
    }
    catch(Exception e)
    {
    MessageBox.Show("文件导入失败,请检查文件!","错误信息",MessageBoxButtons.OK,MessageBoxIcon.Information);
    return null;
    }


    return dt;
    }
      

  3.   

    /* ********************************************************************************************
     * 描述: Excel文件操作
     * 创建: sukyboor 
     * 创建时间: 2005-8-22
     *   
     * 开 发 历 史 
     * ------------------------------------------------------------------------------------------
     *  
     * 修改日期  修改人    修 改 内 容          
     * -------------------------------------------------------------------------------------------
     * 
     *********************************************************************************************/
    using System;
    using Excel;
     
    namespace WuHan 

    public class ExcelFile 

    public ExcelFile(string fileName) 

    if(!Initial()) 
    return; 
     
    excelFileName = fileName; 
      
    //加入新的WorkBook 
    //获取WorkBooks集合  
    workbooks = excelApp.Workbooks; 
    if(!System.IO.File.Exists(fileName)) 
    workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
    else 
    //*修改原有文件 
    workbook = workbooks.Open(excelFileName,Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing); //获取WorkSheets集合 
    sheets = workbook.Worksheets; 
    worksheet = (Worksheet) sheets.get_Item(1); 
    if (worksheet == null)  
    {  
    throw new Exception("工作簿为空!");


     
    /// <summary>
    /// 清除资源
    /// </summary>
    public void Dispose() 

    if(isInitialed && excelApp != null) 
    excelApp.Quit(); 

     
    /// <summary>
    /// 初始化
    /// </summary>
    /// <returns></returns>
    public bool Initial() 

    if(!isInitialed) 

    excelApp = new Excel.Application(); 
    if (excelApp == null)  
    {  
    throw new Exception("Excel文件无法打开!");

    excelApp.DisplayAlerts = false; 
    isInitialed = true; 

    return true; 
    }  private static Excel.Application excelApp;
    private Excel.Workbooks workbooks; 
    private Excel.Workbook workbook; 
    private Sheets sheets; 
    public Worksheet worksheet; 
    private string excelFileName; 
    private static bool isInitialed = false; 
     
    /// <summary>
    /// 写一个单元格
    /// </summary>
    /// <param name="row">行</param>
    /// <param name="column">列</param>
    /// <param name="val">值</param>
    public void WriteText(int row, int column, string val) 

    worksheet.Cells[row, column] = val; 
    }  /// <summary>
    /// 读取一个单元格
    /// </summary>
    /// <param name="row">行</param>
    /// <param name="column">列</param>
    /// <returns></returns>
    public string ReadText(int row, int column) 

    try
    {
    Excel.Range range = (Excel.Range)worksheet.Cells[row, column];
    return (string)range.Text;
    }
    catch
    {
    return "";
    }
    }
     
    /// <summary>
    /// 保存
    /// </summary>
    public void Save() 

    if(!workbook.Saved) 

    workbook.Close(true,excelFileName,true); 



    }
      

  4.   

    注意excel的索引是从1开始的,不是从0开始
      

  5.   

    你的方法完全可以。遇到空值的时候这样 datarow("name") + ""
      

  6.   

    先转换成.txt的然后再读去txt文件