Pergunta

Eu tenho um conjunto de dados que modifiquei em um documento xml e, em seguida, usei uma planilha xsl para transformar em um formato xml do Excel para permitir que os dados fossem abertos programaticamente em meu aplicativo.Eu tive dois problemas com isso:

  1. Excel não é o aplicativo padrão do Windows para abrir arquivos Excel, portanto, quando Program.Start("xmlfilename.xml") é executado, o IE é aberto e o arquivo XML não é muito legível.

  2. Se você renomear o arquivo para .xlsx, receberá um aviso: "Este não é um arquivo Excel, deseja continuar".Isso não é ideal para clientes.

Idealmente, gostaria que o Windows abrisse o arquivo no Excel sem modificar a configuração padrão do sistema operacional para abrir arquivos do Excel.A interoperabilidade do Office é uma possibilidade, mas parece um pouco exagerada para este aplicativo.Alguém tem alguma idéia para fazer isso funcionar?

A solução está em .Net/C#, mas estou aberto a outras possibilidades para criar uma solução limpa.

Foi útil?

Solução

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

Dito isto, você ainda receberá a caixa de mensagem.Suponho que você poderia usar o Interop, mas não tenho certeza se ele funcionará bem para você.

Outras dicas

Se você inserir o seguinte na 2ª linha do seu XML, ele direcionará o Windows para abrir com o Excel

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

E se você salvar o arquivo como xlsx, a extensão do XML-Excel?

Como Sam mencionou, a extensão de arquivo xlsx é provavelmente um bom caminho a seguir.No entanto, há mais coisas envolvidas do que apenas salvar o arquivo xml como xlsx.Um xlsx é na verdade um arquivo zip com vários arquivos xml dentro de pastas.Encontrei um bom código de exemplo aqui o que parece dar algumas boas explicações, embora eu pessoalmente não tenha tentado.

Peço desculpas antecipadamente por conectar uma biblioteca de terceiros, e sei que não é gratuita, mas uso Estúdio FlexCel do software TMS.Se você deseja fazer mais do que apenas despejar dados (formatação, tabelas cruzadas dinâmicas, etc.), ele funciona muito bem.Geramos centenas de relatórios por semana usando-o.

FlexCel aceita conjuntos de dados fortemente tipados, pode agrupar dados de acordo com relacionamentos, e o arquivo Excel gerado parece muito mais limpo do que você pode obter em uma exportação Excel do Crystal Reports.Eu fiz os relatórios de cristal e a automação OLE.FlexCel é uma pechincha de US$ 125 UE.

Espero que isto ajude.

OpenXML no 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top