Pergunta

Eu tenho uma ferramenta 3ª Parte que gera uma planilha XML (* .xls). Eu tenho um outro programa que lê este spreasheet e processa-lo. O conteúdo da planilha XML gerado é uma tabela com 5 colunas e meu programa é executado consultas seleção sobre eles. I m perante um problema que ao abrir uma conexão para a folha de cálculo gerado. Ele diz "{" Tabela externa não está no formato esperado. "}". Meu corda connectin é "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" + excelFileName + "; Extensão Propriedades = \" Excel 8.0; HDR = YES; \ ""; Preciso mudar alguma coisa a este string? Eu tentei usar um conjunto de dados e chamando DataSet.ReadXML (excelFileName); Mas o does not conjunto de dados conter a minha mesa. Quaisquer entradas sobre como ler uma planilha XML?

Obrigado pelo seu tempo, CS

Foi útil?

Solução

Parece que sua seqüência de conexão está definido para arquivos mais velho formato binário do Excel. Você quer uma seqüência de conexão diferente para XML. Se você está falando sobre os novos arquivos XML Excel 2007, então você precisa este conexão corda :

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

Se você está falando sobre o formato xml mais velho que veio no Excel 2003, então eu não tenho certeza que existe uma cadeia de conexão. Nesse caso, sua melhor aposta é a de abrir no Excel e, em seguida, salvar como um arquivo xls, e usar a seqüência de conexão que você estava originalmente usando.

A propósito, ConnectionStrings.com é um ótimo lugar para encontrar qualquer seqüência de conexão de idade que você pode precisar para acessar todos os diferentes tipos de dados.

Além disso, observe como os outros, que, se é um arquivo XML, ele não deve ter uma extensão de arquivo xls, deve ser .xml ou .xlsx.

Outras dicas

               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();

            }

Você pode converter a planilha Excel a 2007 Formatar e, em seguida, usar LINQ para consultar as folhas usando qualquer provedor de código aberto ou OleDB.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top