Question

J'ai un outil 3ème partie qui génère une feuille de calcul XML (* .xls). J'ai un autre programme qui lit ce spreasheet et traite. Le contenu de la feuille de calcul XML généré est une table avec 5 colonnes et mon programme va sélectionner des requêtes sur eux. Je suis confronté à un problème lors de l'ouverture d'une connexion à la feuille produite. Il dit « { » Table externe n'est pas dans le format attendu. « } ». Ma chaîne Connectin est "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + excelFileName + "; Propriétés étendues = \" Excel 8.0, HDR = OUI; \ ""; Ai-je besoin de changer quoi que ce soit à cette chaîne? J'ai essayé d'utiliser un ensemble de données et d'appeler DataSet.ReadXML (excelFileName); Mais l'ensemble de données ne marche pas contenir ma table. Toutes les entrées sur la façon de lire une feuille de calcul xml?

Merci pour votre temps, CS

Était-ce utile?

La solution

On dirait que la 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 :

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 une chaîne de connexion. Dans ce cas, votre meilleur pari est d'ouvrir dans Excel et puis enregistrez en tant que fichier xls, et utiliser la chaîne de connexion que vous utilisez à l'origine.

Par ailleurs, ConnectionStrings.com est un excellent endroit pour trouver une chaîne de connexion ancienne que vous pourriez avoir besoin pour accéder à tous les différents types de données.

A noter également, comme d'autres l'ont noté, que si elle est un fichier xml, il ne devrait pas avoir une extension de fichier xls, il doit être soit .xml ou .xlsx.

Autres conseils

               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 le fichier Excel à 2007 Format, puis utiliser LinQ pour interroger les feuilles en utilisant un fournisseur open source ou OleDB.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top