在硬盘上读取一个Excel格式的文件,但它没有.xls扩展名,是一个未知程序。但它的确是Excel文件,只不过是别的程序导出时将扩展名去掉了,打开方式用Excel可以打开,而且格式也正确。我通过组合字符串的方式生成了["Provider=Microsoft.Jet.Oledb.4.0;Data Source= " + this.DuctIntoBtnEdit.Text + ".xls" + ";Extended Properties=Excel 8.0"; ]语句,往下都很顺利,到了[myDataAdapter = new OleDbDataAdapter(string.Format("Select * from [{0}$]",SheetName),connection);]这一步时,[SheetName]变量就是我硬盘的文件名,同时也是这个Excel文件的Sheet名,但到了[myDataAdapter.Fill(myDataTable);]这一步时,报错[{"Microsoft Jet 数据库引擎找不到对象'SheetName$'。请确定对象是否存在,并正确地写出它的名称和路径。" }]这个错误,
 如果我手动将文件添上.xls,就顺利通过。这是什么原因?? 有什么解决的办法么~~~~

解决方案 »

  1.   

    不知道为什么,要不你先把文件重命名一下,加上".xls"
      

  2.   


    给SHEET页负值的,你参考下:
    public static void SetWorkSheetName (string fileName ,int sheetIndex,string sheetName)
    {
    Excel.Application objApp;
    Excel.Workbooks objBooks;
    Excel._Workbook objBook;
    Excel.Sheets objSheets;
    Excel._Worksheet objSheet;objApp = myApp;
    objApp.Visible = false;
    objBooks = objApp.Workbooks;try
    {
    objBook = objBooks.Open(fileName,Type.Missing ,Type.Missing ,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing);
    objSheets = objBook.Worksheets;if ((sheetIndex > objSheets.Count )|| (sheetIndex <= 0 ))
    {
    throw new Exception("工作表索引超出范围!");
    }objSheet = (Excel._Worksheet)objSheets.get_Item(sheetIndex);
    objSheet.Name = sheetName ;
    objBook.Save();}
    catch(Exception theException)
    {
    String errorMessage;
    errorMessage = "Error: ";
    errorMessage = String.Concat( errorMessage, theException.Message );
    errorMessage = String.Concat( errorMessage, " Line: " );
    errorMessage = String.Concat( errorMessage, theException.Source );
    }
    finally
    {
    objApp.UserControl = true ;
    objApp.Quit();
    }return ;
    }
      

  3.   

    [SheetName]变量就是我硬盘的文件名你在程序处理时给[SheetName]变量加.xls后缀试试