Question

J'ai modifié un jeu de données dans un document xml, puis utilisé une feuille xsl à transformer en format Excel xml afin de permettre aux données d'être ouvertes par programme à partir de mon application. J'ai rencontré deux problèmes avec ceci:

  1. Excel n’est pas l’application Windows par défaut pour ouvrir les fichiers Excel. Par conséquent, lorsque Program.Start ("xmlfilename.xml") est exécuté, IE est ouvert et que le fichier XML n’est pas très lisible.

  2. Si vous renommez le fichier en .xlsx, vous recevez un message d'avertissement "Ce n'est pas un fichier Excel, souhaitez-vous continuer". Ce n'est pas idéal pour les clients.

Idéalement, j'aimerais que Windows ouvre le fichier dans Excel sans modifier le paramètre du système d'exploitation par défaut permettant d'ouvrir les fichiers Excel. Interop Office est une possibilité, mais semble un peu exagéré pour cette application. Quelqu'un a-t-il des idées pour que cela fonctionne?

La solution est au format .Net / C #, mais je suis ouvert à d’autres possibilités pour créer une solution propre.

Était-ce utile?

La solution

Process.Start(@"C:\Program Files\Microsoft Office\Officexx\excel.exe", "yourfile.xml");

Cela étant dit, vous aurez toujours la boîte de message. Je suppose que vous pouvez utiliser l’Interop, mais je ne sais pas si cela fonctionnera pour vous.

Autres conseils

Si vous insérez ce qui suit dans la deuxième ligne de votre code XML, Windows s’ouvre avec Excel

<?mso-application progid="Excel.Sheet"?>

Et si vous sauvegardez le fichier en tant que xlsx, l'extension de XML-Excel?

Comme Sam l’a mentionné, l’extension de fichier xlsx est probablement un bon choix. Cependant, il ne suffit pas de sauvegarder le fichier XML en tant que xlsx. Un xlsx est en fait un fichier zip avec un tas de fichiers XML dans des dossiers. J'ai trouvé un bon exemple de code ici qui semble donner de bonnes explications même si je ne l'ai pas encore trouvé. " t personnellement donné à essayer.

Je m'excuse d'avance de brancher une bibliothèque tierce et je sais que ce n'est pas gratuit, mais j'utilise FlexCel Studio de TMS Software. Si vous souhaitez faire plus que vider des données (formatage, tableaux croisés dynamiques, etc.), cela fonctionne très bien. Nous utilisons des centaines de rapports par semaine.

FlexCel accepte les jeux de données fortement typés, il peut regrouper les données en fonction des relations et le fichier Excel généré est beaucoup plus propre que ce que vous pouvez obtenir avec une exportation Crystal Reports excel. J'ai fait le rapport Crystal, et le processus OLE Automation. FlexCel est une bonne affaire à 125 $ EU.

J'espère que cela vous aidera.

OpenXML dans MSDN - http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.openxml (v = office.11) .aspx

using Excel = Microsoft.Office.Interop.Excel;

string workbookPath= @"C:\temp\Results_2013Apr02_110133_6692.xml";

            this.lblResultFile.Text = string.Format(@" File:{0}",workbookPath);
            if (File.Exists(workbookPath))
            {
                Excel.Application excelApp = new Excel.Application();
                excelApp.Visible = true;
                Excel.Workbook excelWorkbook = excelApp.Workbooks.OpenXML(workbookPath, Type.Missing, Excel.XlXmlLoadOption.xlXmlLoadPromptUser);
            }
            else
            {
                MessageBox.Show(String.Format("File:{0} does not exists", workbookPath));
            }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top