Documento do Excel para XML. Crie e edite um arquivo XML no Excel

Lar / Instalando programas

Ao desenvolver um sistema de gerenciamento eletrônico de documentos, foi necessária a implementação de funções para exportação de dados em formatos populares. Em particular, no formato Microsoft Excel. Os requisitos para exportação eram bastante simples - exportar dados com um mínimo de formatação, ou seja, sem células mescladas, brincando com fontes, etc. Exporte formatos XLSX e Excel XML.

Nesse caso, falarei sobre Excel XML.

Assim, em qualquer sistema que opere com dados tabulares, mais cedo ou mais tarde surge a necessidade de exportar os dados. Os fins de exportação são diferentes:

Implementar numa classe um conjunto de funções para registar os valores das células e de uma série é o principal requisito, o que implica a criação de funções para registar os valores das células de tipos especificados e a capacidade de escrever a série finalizada para um arquivo.

A capacidade de trabalhar com uma quantidade ilimitada de dados - é claro, a classe de exportação em si não pode ser responsável pelo volume que está sendo gravado, mas deve fornecer funções para gravar dados no disco e liberar RAM para a próxima porção de dados.

Além dos requisitos descritos, foi necessário agregar funções de serviço:

  • Habilitando o AutoFiltro
  • Compacte o arquivo em zip.

Implementação

Primeiramente, ao criar uma classe, verifico o nome final do arquivo e solicito a quantidade de colunas e linhas. O arquivo deve ter um nome válido e deve existir a pasta onde será salvo. Tudo está como sempre.
O formato Excel XML permite salvar no arquivo informações do usuário que o criou, portanto, ao criar um cabeçalho, anoto o nome da organização, informações do usuário e a data de criação do arquivo.

Função pública writeDocumentProperties($organização = null, $user = null) ( fwrite($this->file, " "); if (!is_null($usuário)) ( fwrite($este->arquivo, " ".$usuário->descrição.""); fwrite($este->arquivo, " ".$usuário->descrição.""); ) $dt = new Datetime(); $dt_string = $dt->format("Y-m-d\TH:i:s\Z"); fwrite($this->file, " ".$dt_string.""); fwrite($este->arquivo, " ".$dt_string.""); if (!is_null($organização)) fwrite($this->file, " ".$organização->nome.""); fwrite($este->arquivo, " 12.00"); fwrite($este->arquivo, ""); }
É verdade que é nesta função que são utilizadas as entidades do sistema de gestão documental - organização (organização) e utilizador (utilizador). Substituir essas entidades por, digamos, valores de string não é um problema.

A parte mais interessante do cabeçalho são as informações de estilo. Eles são implementados de forma muito conveniente no formato Excel XML, então simplesmente crio uma tabela com estilos para strings, data/hora e hiperlinks.

Função pública writeStyles() ( fwrite($this->file, ""); //default style fwrite($this->file, ""); //Estilo datahora fwrite($this->file, ""); fwrite($este->arquivo, ""); fwrite($este->arquivo, ""); //Estilo do hiperlink fwrite($this->file, ""); //Negrito fwrite($this->file, ""); fwrite($este->arquivo, ""); }

Depois de concluído o trabalho preparatório, você pode prosseguir com o registro dos dados. Abrir uma planilha consiste em apenas algumas tags, neste momento são utilizadas informações sobre o número de colunas e linhas.

Função pública openWorksheet() ( fwrite($this->file, " "); fwrite($este->arquivo, strtr("

", array("(col_count)"=>$this->colCount, "(row_count)"=>$this->rowCount))); )
Mas gravar linhas é um processo mais interessante. A turma deve trabalhar com rapidez e processar uma quantidade ilimitada de dados, pois pode haver cem mil ou até um milhão de registros! Se você quer velocidade, trabalhe com memória; se quiser dados ilimitados, trabalhe com disco. Para conciliar os requisitos, implementei as funções resetRow e flushRow.
O primeiro limpa a linha atual, após o que ela pode ser preenchida novamente com dados, e o segundo grava a linha atual em um arquivo aberto no disco. Usá-los juntos permite manter um equilíbrio entre velocidade e quantidade de memória usada.

Função pública resetRow() ( $this->currentRow = array(); ) função pública flushRow() ( fwrite($this->file, implode("", $this->currentRow)); unset($this-> linha atual);
Cada célula é escrita com uma função correspondente ao tipo de dados, nomeadamente appendCellxxx, onde xxx é o tipo de dados. Tipos de dados válidos: Num, String, Real, DateTime, Date, Time, Link. Exemplo de função para escrever um valor numérico:

Função pública appendCellNum($value) ( ​​$this->currentRow = " ".$valor.""; }
Depois de registrar todos os dados, resta fechar a planilha e a pasta de trabalho.

Aplicativo

O uso da classe descrita é baseado na exportação de dados utilizando o provedor CArrayDataProvider. No entanto, supondo que o volume de dados exportados possa ser muito grande, um iterador especial CDataProviderIterator é usado, que itera os dados retornados em 100 registros (você pode especificar um número diferente de registros).

Função pública exportExcelXML($organização, $user, &$filename) ( $this->_provider = new CArrayDataProvider(/*query*/); Yii::import("ext.AlxdExportExcelXML.AlxdExportExcelXML"); $export = new AlxdExportExcelXML ($filename, count($this->_attributes), $this->_provider->getTotalItemCount() + 1); $export->openWriter(); export->writeStyles(); $export->openWorksheet(); //linha de título $export->resetRow(); $this->_objectref->getAttributeLabel($code)); $export->closeRow(); $export->flushRow(); ) ( $export->resetRow(); $export->openRow(); foreach ($this->_attributes as $code => $format) ( switch ($format->type) ( case "Num": $export ->appendCellNum($row[$code]); /*outros tipos*/ padrão: $export->appendCellString("");
) ) $export->closeRow();

$exportar->flushRow();

) //fecha tudo $export->closeWorksheet();
$export->closeWorkbook();
$exportar->closeWriter();
//arquivo zip $export->zip(); 1626 $nomedoarquivo = $exportar->getZipFullNomeArquivo(); ) 9 No meu caso, cada linha é gravada no disco, o que é bastante aceitável por enquanto, mas pode exigir alterações no futuro. Por exemplo, seria sensato salvar não todas as linhas, mas sim cada dez ou mesmo cem linhas de cada vez. Então a velocidade de exportação aumentará.
Velocidade
Aliás, aprendi por experiência própria o quão importante é assumir a possibilidade da existência de grandes volumes de dados durante uma operação em lote como a exportação.
Inicialmente, tentei exportar dados usando CActiveDataProvider, o que exigia cerca de 240 segundos ao exportar 1000 registros! Alterar a consulta para usar CArrayDataProvider reduziu o tempo de exportação de 1.000 registros para 0,5 segundos!
Medi indicadores de exportação especialmente para esta publicação.
Exportado 1 312 269
registros de 141 762
atributos que representam informações sobre incidentes fechados (consulte ITSM). 0.5 Visualização inicial da tabela exportada

Resultado (desculpe, a imagem desaparece após a publicação) para desvincular entidades do sistema de gerenciamento de documentos, organização e usuário, ou usar suas próprias entidades semelhantes com as propriedades correspondentes.

Depois de importar dados XML, mapear os dados para células da planilha e fazer alterações nos dados, muitas vezes você precisa exportar ou salvar os dados como um arquivo XML.

Importante:

Exportar dados XML (máx. 65.536 linhas)

Exportar dados XML (mais de 65.536 linhas)

    Encontre a diferença entre o número total de linhas no arquivo e o número 65.537. Vamos denotar esse número como x.

    Exclua x linhas do início de uma planilha do Excel.

    Exporte a planilha para um arquivo de dados XML (a seção anterior descreve o procedimento).

    Clique no botão Fechar, Mas não economize folha. Em seguida, abra a planilha do Excel novamente.

    Remova todos os dados após x inteiro e exporte-os como um arquivo de dados XML (consulte a seção anterior do procedimento).

    Isso evitará que você perca o restante dos dados. Neste ponto, você tem dois arquivos de exportação XML que podem ser combinados para criar uma duplicata da planilha original.

Salvando dados XML em células mapeadas em um arquivo de dados XML

Se precisar manter a compatibilidade com versões anteriores da funcionalidade XML, você poderá salvar o arquivo como um arquivo de dados XML em vez de usar o comando Exportar.

Observação: Se a planilha contiver títulos ou rótulos diferentes dos nomes dos elementos XML no mapa XML, o Excel usará os nomes dos elementos XML quando você exportar ou salvar os dados XML.

Problemas comuns ao exportar dados XML

Mensagens semelhantes às seguintes podem aparecer ao exportar dados XML.

Este mapa XML pode ser exportado, mas alguns elementos necessários não são mapeados

Esta mensagem pode aparecer pelos seguintes motivos.

    O mapa XML associado a esta tabela XML possui um ou mais elementos obrigatórios que não estão mapeados para ele.

    A lista hierárquica de itens no painel de tarefas Fonte XML indica a presença de itens necessários colocando uma estrela vermelha no canto superior direito do ícone à esquerda de cada item. Para mapear o elemento desejado, arraste-o para a planilha onde deseja que apareça.

    O elemento representa uma estrutura recursiva.

    Um exemplo típico de estrutura recursiva é uma hierarquia de funcionários e gerentes, na qual os mesmos elementos XML estão aninhados em vários níveis. Embora você possa corresponder todos os elementos no painel de tarefas Origem XML, o Excel não oferece suporte a estruturas recursivas com mais de um nível de profundidade, portanto, não pode corresponder a todos os elementos.

    A tabela XML contém conteúdo misto.

    O conteúdo misto ocorre quando um elemento contém um elemento filho e texto simples fora do elemento filho. Este é frequentemente o caso quando tags de formatação (como tags em negrito) são usadas para marcar dados dentro de um elemento. O elemento filho pode ser exibido (se for compatível com o Excel), mas o conteúdo do texto é perdido quando os dados são importados e não fica disponível quando exportados, o que significa que não é usado na operação direta ou reversa.

Não é possível exportar mapas XML em uma pasta de trabalho

O mapa XML não será exportado se os relacionamentos do elemento mapeado com outros elementos não puderem ser preservados. O relacionamento pode não sobreviver pelos seguintes motivos.

    A definição de esquema do elemento mapeado está contida em uma sequência com os seguintes atributos:

    • atributo máximo ocorre não é igual a 1;

      a sequência contém mais de um elemento filho direto ou inclui outro objeto composto como tal elemento.

    Elementos irmãos não repetidos com o mesmo elemento pai repetido são mapeados para tabelas XML diferentes.

    Vários elementos duplicados são mapeados para a mesma tabela XML e a repetição não é definida por um ancestral.

    Filhos de diferentes elementos pais são mapeados para a mesma tabela XML.

Além disso, não será possível exportar um mapa XML se ele contiver uma das construções de esquema XML a seguir.

    Lista de listas. Uma lista de elementos contém outra lista de elementos.

    Dados não padronizados. A tabela XML contém um elemento que, conforme definição no esquema, deve ocorrer uma vez (o atributo máximo ocorre atribuído o valor 1). Quando você adiciona esse elemento a uma tabela XML, o Excel preencherá a coluna da tabela com várias instâncias dele.

    Escolha. O elemento correspondente faz parte da construção do circuito .

Representação de dados com base na inserção de uma descrição com tags ou configurações do programa. Você não pode abri-los para edição com um clique duplo normal. Isso se deve ao fato de que o aplicativo necessário, utilizado por padrão, não está instalado para associação à extensão. Mas se quiser um arquivo de tabela legível que possa ser editado, você pode abrir o arquivo XML no Excel. Neste caso, não são necessários conversores que possam converter formatos entre si. A única ressalva é que esse recurso está disponível apenas nas versões do Office 2003 e superiores.

Como abrir XML no Excel: método um

Vejamos a importação de dados com base no Excel versão 2016. A primeira e mais fácil maneira é iniciar inicialmente o Excel. Ao iniciar o aplicativo, ao invés de uma saudação e logotipo, ele exibirá uma janela especial de login, na qual existe a linha “Abrir outros livros” no menu esquerdo.

Depois disso, o item de navegação é utilizado e na nova janela XML é selecionado como formato de abertura. Depois disso, usando o método usual, encontramos o arquivo desejado e pressionamos o botão abrir. Neste caso, é reconhecido não como um documento de texto contendo descrições e tags, mas como uma tabela bastante comum. Naturalmente, os dados podem ser editados a seu critério, mas falaremos mais sobre isso mais tarde.

Como abrir o formato XML no Excel: método dois

Outro método proposto praticamente não difere do primeiro. Você pode abrir um arquivo XML no Excel no menu arquivo ou usar o atalho Ctrl + O para fazer isso.

Novamente, primeiro é selecionado o tipo de formato a ser aberto, após o qual o arquivo desejado é encontrado e o botão correspondente é pressionado.

Abrindo XML: Método Três

Existem vários outros métodos XML no Excel. Assim, na versão 2016 do programa, você pode utilizar o menu do painel superior, onde seleciona a seção “Dados”, e a seguir clicar no botão para obter dados externos.

No menu suspenso, basta selecionar a seção “De Outras Fontes” e usar a linha “De Importação XML” no novo menu. Isto é seguido pelo procedimento padrão de procurar o arquivo desejado e depois abri-lo.

Editando, salvando e exportando

Ao utilizar qualquer um desses métodos, o usuário obtém a estrutura da tabela. A edição é feita da mesma forma que os arquivos XLS padrão. Às vezes, para facilitar a edição e salvamento de dados, é aconselhável usar o menu do desenvolvedor.

Neste caso, você pode importar não todo o conteúdo do arquivo XML, mas apenas o que é realmente necessário, inserindo as informações nas colunas e linhas apropriadas, especificando o objeto XML como fonte de dados. Mas para fazer isso, você precisa fazer login em sua conta no próprio programa usando seu registro na Microsoft.

Você pode salvar o arquivo alterado imediatamente no formato original selecionando o tipo apropriado na lista. No menu arquivo, se o objeto foi salvo no formato “nativo” do Excel, você pode selecionar a função de exportação, clicar em alterar tipo de arquivo e definir XML como formato final.

Se o usuário tiver preguiça de fazer tais conversões, ou usar uma versão do Office inferior à versão 2003, terá que usar um conversor especial para abrir esse formato como uma tabela. Existem muitos desses programas oferecidos agora. Como último recurso, se não for adequado, pode facilmente recorrer a serviços online especializados, onde o formato será alterado em algumas dezenas de segundos. Depois de concluir essas etapas, resta baixar o resultado final em formato XLS para o seu disco rígido e abri-lo no Excel. Porém, na maioria dos casos, tais ações não são necessárias, pois no Office 2003 a capacidade de abrir (importar) diretamente o formato XML já é fornecida inicialmente. E parece que poucas pessoas hoje usam produtos desatualizados do Microsoft Office.

O Microsoft Excel é uma ferramenta conveniente para organizar e estruturar uma ampla variedade de dados. Ele permite processar informações usando diferentes métodos e editar conjuntos de dados.

Vamos considerar as possibilidades de usá-lo para gerar e processar arquivos de aplicações web. Usando um exemplo específico, estudaremos os fundamentos do trabalho com XML no Excel.

Como criar um arquivo XML do Excel

XML é um padrão de arquivo para transmissão de dados na Web. O Excel suporta sua exportação e importação.

Vejamos como criar um arquivo XML usando o exemplo de um calendário de produção.

  1. Vamos fazer uma tabela a partir da qual você precisa criar um arquivo XML no Excel e preenchê-lo com dados.
  2. Vamos criar e inserir um mapa XML com a estrutura de documento necessária.
  3. Exporte dados da tabela para formato XML.

Salvamos o arquivo como XML.

Outras maneiras de obter dados XML (esquema):

  1. Baixe de um banco de dados um aplicativo de negócios especializado. Os esquemas podem ser fornecidos por sites e serviços comerciais. Opções simples estão disponíveis publicamente.
  2. Use amostras prontas para testar mapas XML. As amostras contêm os elementos principais e a estrutura XML. Copie e cole no Bloco de Notas e salve com a extensão desejada.


Como salvar um arquivo Excel em formato XML

Uma das opções:

  1. Clique no botão Escritório. Selecione “Salvar como” - “Outros formatos”.
  2. Atribuímos um nome. Selecione o local de salvamento e o tipo de arquivo – XML.

Mais opções:

  1. Baixe o conversor XLC para XML. Ou encontre um serviço que permita exportar o arquivo online.
  2. Baixe o suplemento XML Tools do site oficial da Microsoft. Está disponível gratuitamente.
  3. Abrindo um novo livro. Botão Office – “Abrir”.

Como abrir um arquivo XML no Excel

Clique em OK. Você pode trabalhar com a tabela resultante como faria com qualquer arquivo Excel.

Como converter arquivo XML para Excel

Editamos a tabela criada e salvamos em formato Excel.

Como coletar dados de arquivos XML no Excel

O princípio de coletar informações de vários arquivos XML é igual ao princípio da transformação. Quando importamos dados para o Excel, o mapa XML é transferido ao mesmo tempo. Outros dados podem ser transferidos para o mesmo esquema.

Cada novo arquivo será vinculado a um mapa existente. Cada elemento na estrutura da tabela corresponde a um elemento no mapa. Apenas uma ligação de dados é permitida.

Para configurar opções de vinculação, abra a ferramenta Propriedades do mapa no menu Desenvolvedor.


Possibilidades:

  1. Cada novo arquivo será verificado pelo Excel quanto à conformidade com o cartão instalado (se marcarmos a caixa ao lado deste item).
  2. Os dados podem ser atualizados. Ou novas informações serão adicionadas à tabela existente (faz sentido se você precisar coletar dados de arquivos semelhantes).

Todas essas são formas manuais de importar e exportar arquivos.

Observação: Este artigo serviu ao seu propósito e em breve será descontinuado. Para evitar erros de "Página não encontrada", removemos os links que conhecemos. Se você criou links para esta página, remova-os e juntos poderemos manter a consistência em toda a web.

Se precisar criar um arquivo de dados XML e um arquivo de esquema XML a partir de um intervalo de células em uma planilha, você poderá usar a versão 1.1 do suplemento XML Tools for Excel 2003 para estender os recursos XML existentes no Microsoft Excel 2007 e posterior versões.

Observação: Este suplemento foi desenvolvido para Excel 2003. A documentação e a interface do usuário referem-se a listas, que são chamadas de tabelas do Excel em versões do aplicativo posteriores ao Excel 2003.

Para obter mais informações sobre como trabalhar com esse suplemento, consulte Usar o suplemento XML Tools versão 1.1 para Excel 2003.

Etapa 2: converter um intervalo de células em uma tabela XML

    Insira os dados para os quais deseja criar um arquivo de dados XML e um arquivo de esquema XML. Os dados devem ser apresentados em formato tabular na forma de colunas e linhas (chamados de dados comuns).

    Na aba Complementos no grupo Comandos de menu clique na seta ao lado da legenda Ferramentas XML e pressione o botão Converter intervalo em lista XML.

    Insira o intervalo de células com os dados que deseja converter como referência absoluta na caixa de texto.

    No campo A primeira linha contém os nomes das colunas selecione Não, se a primeira linha contiver dados, ou Sim se a primeira linha contiver cabeçalhos de coluna e clique em OK.

    O Excel criará automaticamente o esquema XML, vinculará as células ao esquema e criará a tabela XML.

    Importante: Se o Editor do Visual Basic for aberto e você vir uma mensagem de erro do Visual Basic for Applications (VBA), siga estas etapas:

    1. Clique no botão OK.

      Na linha destacada do módulo de código VBA, remova “50” da linha. Em outras palavras, mude:
      XMLDoc como MSXML2 . DOMDocumento50
      Para quem:
      XMLDoc como Msxml2. Domdocumento

      Pressione F5 para procurar a próxima linha contendo o texto "XMLDoc As msxml2.DOMDocument50", clique OK e altere a linha como no parágrafo anterior.

      Pressione F5 novamente para localizar e alterar outras instâncias da linha.

      Se você não vir mais a mensagem de erro do VBA depois de pressionar F5, feche o Editor do Visual Basic para retornar à pasta de trabalho. O intervalo de células será convertido em uma tabela XML.

      Observação: Para exibir todos os mapas XML em uma pasta de trabalho, na guia Desenvolvedor no grupo XML clique no botão Fonte para exibir o painel de tarefas Origem XML. Na parte inferior do painel de tarefas Fonte XML, clique em Mapas XML.

      Se a guia Desenvolvedor não estiver visível, siga as três primeiras etapas da próxima seção para adicioná-lo à faixa do Excel.

Etapa 3: Exportar a tabela XML para um arquivo de dados XML (XML)

Observação: Ao criar mapas XML e exportar dados do Excel para arquivos XML, há um limite para o número de linhas que podem ser exportadas. Ao exportar para um arquivo XML do Excel, você pode salvar até 65.536 linhas. Se o arquivo contiver mais de 65.536 linhas, o Excel só poderá exportar as primeiras linhas (número de linhas mod 65.537). Por exemplo, se uma planilha contiver 70.000 linhas, o Excel exportará 4.464 linhas (70.000 mod 65.537). Recomendamos seguir uma das seguintes dicas: 1) utilizar o formato XLSX; 2) salve o arquivo no formato "Tabela XML 2003 (*.xml)" (isso perderá os mapeamentos); 3) exclua todas as linhas após 65536 e exporte novamente (isso manterá os mapeamentos, mas perderá as linhas no final do arquivo).

Etapa 4: Salvar o Esquema XML em um arquivo de Esquema XML (XSD)

Observação: Esta página foi traduzida automaticamente e pode conter imprecisões e erros gramaticais. É importante para nós que este artigo seja útil para você. A informação foi útil? Por conveniência também (em inglês).

© 2024 ermake.ru - Sobre reparo de PC - Portal de informações