Pregunta

Tengo un conjunto de datos que modifiqué en un documento xml y luego usé una hoja xsl para transformarlo a un formato xml de Excel para permitir que los datos se abran mediante programación desde mi aplicación.Me he encontrado con dos problemas con esto:

  1. Excel no es la aplicación predeterminada de Windows para abrir archivos de Excel, por lo tanto, cuando se ejecuta Program.Start("xmlfilename.xml"), se abre IE y el archivo XML no es muy legible.

  2. Si cambia el nombre del archivo a .xlsx, recibirá una advertencia: "Este no es un archivo de Excel, ¿desea continuar?".Esto no es ideal para los clientes.

Idealmente, me gustaría que Windows abra el archivo en Excel sin modificar la configuración predeterminada del sistema operativo para abrir archivos de Excel.La interoperabilidad de Office es una posibilidad, pero parece un poco exagerada para esta aplicación.¿Alguien tiene alguna idea para hacer que esto funcione?

La solución está en .Net/C#, pero estoy abierto a otras posibilidades para crear una solución limpia.

¿Fue útil?

Solución

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

Dicho esto, seguirás apareciendo el cuadro de mensaje.Supongo que podrías usar Interop, pero no estoy seguro de qué tan bien funcionará para ti.

Otros consejos

Si inserta lo siguiente en la segunda línea de su XML, le indicará a Windows que se abra con Excel.

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

¿Qué pasa si guarda el archivo como xlsx, la extensión de XML-Excel?

Como mencionó Sam, la extensión de archivo xlsx es probablemente un buen camino a seguir.Sin embargo, implica más que simplemente guardar el archivo xml como xlsx.Un xlsx es en realidad un archivo zip con un montón de archivos xml dentro de carpetas.Encontré un buen código de muestra. aquí lo que parece dar algunas buenas explicaciones aunque personalmente no lo he probado.

Disculpas de antemano por conectar una biblioteca de terceros, y sé que no es gratis, pero uso Estudio FlexCel del software TMS.Si busca hacer algo más que simplemente volcar datos (formateo, tablas cruzadas dinámicas, etc.), funciona muy bien.Generamos cientos de informes a la semana usándolo.

FlexCel acepta conjuntos de datos fuertemente tipados, puede agrupar datos según relaciones y el archivo de Excel generado se ve mucho más limpio que lo que puede obtener de una exportación de Excel de Crystal Reports.He hecho lo de Crystal Reports y lo de automatización OLE.FlexCel es una ganga a $125 EU.

Espero que esto ayude.

OpenXML en 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));
            }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top