c# y Excel

01/03/2010 - 18:48 por ronhi | Informe spam
Hola a todos,
Alguien puede ayudarme a decifrar como puedo mandar a llamar el nombre de
una hoja de calculo d excel por su nombre interno y no por el externo, es
decir cda que me conecto a una hoja de calculo lo mediante la siguiente
consulta:

string query= "Select * from [Electronica$]"

sin embargo quiero hacerlo por su nombre interno, lo hago asi pero siempre
falla

string query= "Select * from sheets1$]"

Alguien sabe com hacerlo?

Preguntas similare

Leer las respuestas

#1 Leandro Tuttini
01/03/2010 - 19:00 | Informe spam
hola

el team es que si has renombrado la hoja esta ya no es mas Sheet1

la verdad no habia escuchado de un nombre interno o externo, las hojas
tienen nombre, el que le ponga y por ese lo accedes

por ahi lo que podrias hacer es algun tipo de validacion consultando
los nombre de las hojas disponibles

C# - Retrieve Excel Workbook Sheet Names.
http://www.codeproject.com/KB/aspne...names.aspx

Reading Excel Worksheet and Column Schema Information Using ADO.NET
2.0 and GetSchema
http://davidhayden.com/blog/dave/ar.../2975.aspx

saludos
#2 Gustavo Cantero
01/03/2010 - 19:03 | Informe spam
Nosotros hicimos una clase "helper" para manejo de los Excels. Te paso
el método que nos devuelve el nombre de las hojas de un archivo xls
modificado para que funcione como estático, seguro te sirve:

/// <summary>
/// Devuelve el nombre interno de las hojas de la planilla
/// </summary>
/// <param name="PhysicalSheets">Establece si se deben devolver sólo las
hojas físicas,
/// y no las lógicas</param>
/// <param name=" FileName ">Archivo XLS</param>
/// <returns>Nombre de las hojas de la planilla</returns>
/// <remarks>Los nombre terminarán con el signo $, ya que asi es el nombre
/// de la tabla, aunque en el Excel se vean sin este símbolo</remarks>
public static string[] GetSheetNames(string FileName, bool PhysicalSheets)
{
using (OleDbConnection objCon = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended
Properties=Excel 8.0;Data Source=" + FileName))
{
objCon.Open();

//Obtengo el esquema de la planilla
using (DataTable objDT =
objCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
{
if (objDT == null)
return null;

string[] strSheets;

//Agrego el nombre de las hojas
if (PhysicalSheets)
{
List<string> objList = new List<string>();
foreach (DataRow objRow in objDT.Rows)
{
string strSheet = objRow["TABLE_NAME"].ToString();
if (strSheet.EndsWith("$") || strSheet.EndsWith("$'"))
objList.Add(strSheet);
}
strSheets = new string[objList.Count];
objList.CopyTo(strSheets);
}
else
{
strSheets = new string[objDT.Rows.Count];
int i = 0;
foreach (DataRow objRow in objDT.Rows)
strSheets[i++] = objRow["TABLE_NAME"].ToString();
}

return strSheets;
}
}
}

Suerte!

Gustavo A. Cantero
Scientia® Soluciones Informáticas
MCP - MCSD - MCTS - MCPD
http://www.scientia.com.ar
http://www.programandoamedianoche.com
http://foro.scientia.com.ar


From: ronhi [mailto:]
Posted At: lunes, 01 de marzo de 2010 02:48 p.m.
Posted To: microsoft.public.es.csharp
Conversation: c# y Excel
Subject: c# y Excel

Hola a todos,
Alguien puede ayudarme a decifrar como puedo mandar a llamar el nombre de
una hoja de calculo d excel por su nombre interno y no por el externo, es
decir cda que me conecto a una hoja de calculo lo mediante la siguiente
consulta:

string query= "Select * from [Electronica$]"

sin embargo quiero hacerlo por su nombre interno, lo hago asi pero siempre
falla

string query= "Select * from sheets1$]"

Alguien sabe com hacerlo?
#3 ronhi
01/03/2010 - 22:41 | Informe spam
Hola Gustavo, el proyecto me devuelve un error diciendo que me hace falta un
ensamblado para list!!!, necesito agregar algun espacion de nombres?

"Gustavo Cantero" wrote:

Mostrar la cita
#4 Gustavo Cantero
01/03/2010 - 22:49 | Informe spam
No, solamente deberías agregarle arriba de todo:

using System.Data;
using System.Data.OleDb;

Si te sigue dando error por favor dime en qué línea.
Saludos.

Gustavo A. Cantero
Scientia® Soluciones Informáticas
MCP - MCSD - MCTS - MCPD
http://www.scientia.com.ar
http://www.programandoamedianoche.com
http://foro.scientia.com.ar


From: ronhi [mailto:]
Posted At: lunes, 01 de marzo de 2010 06:41 p.m.
Posted To: microsoft.public.es.csharp
Conversation: c# y Excel
Subject: Re: c# y Excel

Hola Gustavo, el proyecto me devuelve un error diciendo que me hace falta
un
ensamblado para list!!!, necesito agregar algun espacion de nombres?

"Gustavo Cantero" wrote:

Mostrar la cita
#5 ronhi
01/03/2010 - 23:40 | Informe spam
Hola Gustavo!!!

De antemano mil disculpas por mi falta de observación, mi proyecto me dio la
opción de buscar el espacio que me hacia falta y coloco esto:

using System.Collections.Generic;

despues todo funciono de maravilla.

Agreadezco mucho tu atención y apoyo para la resolución de mi problema.

saludos cordiales,
Hugo Rocha.


"Gustavo Cantero" wrote:

Mostrar la cita
Ads by Google
Search Busqueda sugerida