2009-05-21 6 views
0

J'ai un outil tiers qui génère une feuille de calcul xml (* .xls). J'ai un autre programme qui lit cette feuille de calcul et la traite. Le contenu de la feuille de calcul xml générée est une table avec 5 colonnes et mon programme exécute des requêtes sur celles-ci. Je suis confronté à un problème lors de l'ouverture d'une connexion à la feuille de calcul générée. Il dit "{" La table externe n'est pas dans le format attendu. "}". Ma chaîne Connectin est "Fournisseur = Microsoft.Jet.OLEDB.4.0; Source de données =" + ExcelFileName + "; Propriétés étendues = \" Excel 8.0; HDR = YES; \ ""; Ai-je besoin de changer quelque chose à cette chaîne? J'ai essayé d'utiliser un dataset et d'appeler dataSet.ReadXml (excelFileName); Mais l'ensemble de données ne contient pas ma table. Des entrées sur la façon de lire une feuille de calcul XML?Comment lire la feuille de calcul xml

Merci pour votre temps, CS

+1

xls est une feuille de calcul Excel (?) – Shoban

+0

, vous pouvez enregistrer une feuille de calcul en tant que xml spreasheet 2003 (enregistrer en tant que menu d'options de type) l'extension de fichier est * .xls – Cshah

+0

"xml spreadsheet (* .xls)." C'est involontairement hilarant. S'il vous plaît lire http://en.wikipedia.org/wiki/Microsoft_Excel_file_format#File_formats et http://en.wikipedia.org/wiki/Office_Open_XML –

Répondre

1

ressemble à votre chaîne de connexion est définie pour format binaire anciens fichiers Excel. Vous voulez une chaîne de connexion différente pour XML. Si vous parlez des nouveaux fichiers xml Excel 2007, vous avez besoin de cette connection string:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"; 

Si vous parlez du format xml plus fourni dans Excel 2003, alors je ne suis pas sûr qu'il ya un chaîne de connexion. Dans ce cas, la meilleure solution consiste à ouvrir dans Excel, puis à enregistrer en tant que fichier xls et à utiliser la chaîne de connexion que vous utilisiez à l'origine. Par ailleurs, ConnectionStrings.com est un bon endroit pour trouver n'importe quelle ancienne chaîne de connexion dont vous pourriez avoir besoin pour accéder à toutes sortes de données. Notez également, comme d'autres l'ont noté, que s'il s'agit d'un fichier xml, il ne devrait pas avoir d'extension de fichier xls, il devrait être soit .xml ou .xlsx.

0
   Excel.Workbook wb1; 

      Excel.Application wb2 = new Excel.Application(); 

      wb2.DisplayAlerts = false; 
          wb1 = (Excel.Workbook)wb2.Workbooks._Open(filename); 

      if (wb1.FileFormat == Excel.XlFileFormat.xlXMLSpreadsheet) 
      { 
            wb1.SaveAs(filename, Excel.XlFileFormat.xlExcel12, Type.Missing, Type.Missing, 
         false, false, Excel.XlSaveAsAccessMode.xlNoChange, 
         Excel.XlSaveConflictResolution.xlOtherSessionChanges, false); 
      } 
      else 
      { 
       wb2.Workbooks.Close(); 

      } 

Vous pouvez convertir la feuille Excel SpreadSheet au format 2007, puis utiliser LinQ pour interroger les feuilles à l'aide de n'importe quel fournisseur Open Source ou OleDB.

Questions connexes