Excel Csharp - Validação nome de coluna e aba
Pessoal, boa noite!
Gostaria de saber se consigo validar o nome das abas e colunas de um arquivo excel. Eu salvo o excel no banco e abro o arquivo, mas gostaria além disso, validar se o usuário colocou o nome da aba e da coluna de acordo com um modelo pré definido.
Eu utilizo a classe bulckcopy para gravar os dados no banco, ela identifica o nome da coluna, por isso, o excel tem que ser exatamente como está na classe.
Tentei fazer algo neste formado:
OleDbDataAdapter adapter = new OleDbDataAdapter("Select top 1 * from [Institution$]", con1);
DataSet ds = new DataSet();
using (SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString))
{
sqlcon.Open();
adapter.Fill(ds);
foreach (DataRow linha in ds.Tables[0].Rows)
{
DataTable.Equals("Record Id: ", linha["Record Id"].ToString());
Mas desta forma tenho que tratar o erro no catch com ifs e não ficou muito bom.
Se alguém souber de uma outra forma, agradeço.
Abs,
Marcos
Gostaria de saber se consigo validar o nome das abas e colunas de um arquivo excel. Eu salvo o excel no banco e abro o arquivo, mas gostaria além disso, validar se o usuário colocou o nome da aba e da coluna de acordo com um modelo pré definido.
Eu utilizo a classe bulckcopy para gravar os dados no banco, ela identifica o nome da coluna, por isso, o excel tem que ser exatamente como está na classe.
Tentei fazer algo neste formado:
OleDbDataAdapter adapter = new OleDbDataAdapter("Select top 1 * from [Institution$]", con1);
DataSet ds = new DataSet();
using (SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString))
{
sqlcon.Open();
adapter.Fill(ds);
foreach (DataRow linha in ds.Tables[0].Rows)
{
DataTable.Equals("Record Id: ", linha["Record Id"].ToString());
Mas desta forma tenho que tratar o erro no catch com ifs e não ficou muito bom.
Se alguém souber de uma outra forma, agradeço.
Abs,
Marcos
Marcos Pinto
Curtidas 0
Respostas
Henrique Gasparotto
14/02/2014
Olá Marcos, dessa forma ele está funcionando?
GOSTEI 0
Marcos Pinto
14/02/2014
Sim, ele funciona, só que desta forma eu trato a exceção.
Precisava de uma forma para tratar o erro antes de cair na exceção, consegui montar de outro jeito.
Precisava de uma forma para tratar o erro antes de cair na exceção, consegui montar de outro jeito.
GOSTEI 0
Henrique Gasparotto
14/02/2014
Sim, entendi. Então já está tudo ok? Se possível, coloque a solução aqui pra nós, pro pessoal entender melhor. Abraço.
GOSTEI 0
Marcos Pinto
14/02/2014
using (OleDbConnection conn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=;Extended Properties=Excel 12.0", serverFullPath)))
{
conn.Open();
DataTable dtSchema = conn.GetSchema("Tables");
DataTable dtSchemaColun = conn.GetSchema("Columns");
string SheetName = "'Export Worksheet$$'";
string strReturn = "";
List<string> retList;
List<string> columns = new List<string>(new[] {"colunaExcel"});
foreach (DataRow row in dtSchemaColun.Rows)
{
if (row["TABLE_NAME"].ToString() == SheetName)
{
if (columns.Exists(p => p.Equals(row["COLUMN_NAME"].ToString())))
{
columns.Remove(row["COLUMN_NAME"].ToString());
}
//retList.Add(columns.ToString());
}
else
{
conn.Close();
strReturn = SheetName.Replace("'Export Worksheet$$'", "'Export Worksheet'");
List<string> Sheet = new List<string>(new[] { strReturn });
return Sheet;
}
}
conn.Close();
retList = columns;
return retList;
}
{
conn.Open();
DataTable dtSchema = conn.GetSchema("Tables");
DataTable dtSchemaColun = conn.GetSchema("Columns");
string SheetName = "'Export Worksheet$$'";
string strReturn = "";
List<string> retList;
List<string> columns = new List<string>(new[] {"colunaExcel"});
foreach (DataRow row in dtSchemaColun.Rows)
{
if (row["TABLE_NAME"].ToString() == SheetName)
{
if (columns.Exists(p => p.Equals(row["COLUMN_NAME"].ToString())))
{
columns.Remove(row["COLUMN_NAME"].ToString());
}
//retList.Add(columns.ToString());
}
else
{
conn.Close();
strReturn = SheetName.Replace("'Export Worksheet$$'", "'Export Worksheet'");
List<string> Sheet = new List<string>(new[] { strReturn });
return Sheet;
}
}
conn.Close();
retList = columns;
return retList;
}
GOSTEI 0
Marcos Pinto
14/02/2014
Meu problema agora é quando utilizo um Excel com mais de uma sheet, alguma sugestão?
GOSTEI 0