Pregunta

Tengo una herramienta de tercera parte que genera una hoja de cálculo XML (* .xls). Tengo otro programa que lea este spreasheet y lo procesa. El contenido de la hoja de cálculo XML generado es una tabla con 5 columnas y mi programa se ejecuta consultas de selección sobre ellos. I m un asunto relacionado, mientras que la apertura de una conexión a la hoja de cálculo generado. Se dice "{" La tabla externa no está en el formato esperado. "}". Mi cadena Cone es "Provider = Microsoft.Jet.OleDb.4.0; Data Source =" + + ExcelFileName "; Extended Properties = \" Excel 8.0; HDR = SI; \ ""; ¿Es necesario cambiar nada de esta cadena? He intentado utilizar un conjunto de datos y llamar a DataSet.ReadXML (ExcelFileName); Pero el imposible de conjunto de datos contiene mi mesa. Cualquier entrada sobre cómo leer una hoja de cálculo XML?

Gracias por su tiempo, CS

¿Fue útil?

Solución

Parece que la cadena de conexión se establece para los archivos de Excel en formato binario mayores. ¿Quieres una cadena de conexión diferente para XML. Si usted está hablando de los nuevos archivos XML de Excel 2007, entonces usted necesita este cadena de conexión :

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

Si usted está hablando de la mayor formato XML que se incluye en Excel 2003, entonces no estoy seguro de que hay una cadena de conexión. En cuyo caso, la mejor opción es abrir en Excel y luego guardar como un archivo xls, y el uso de la cadena de conexión que estaba utilizando en un principio.

Por cierto, ConnectionStrings.com es un gran lugar para encontrar cualquier secuencia de la conexión de edad que pueda necesitar para tener acceso a todos los tipos diferentes de datos.

Tenga en cuenta también, como han dicho otros, que si es un archivo XML, no debe tener una extensión de archivo xls, debe ser .xml o .xlsx.

Otros consejos

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

            }

Puede convertir la hoja de cálculo Excel para 2007 Formato y luego utilizar LINQ para consultar las hojas usando cualquier proveedor de código abierto o OleDB.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top