Array
(
)

Excel Csharp - Validação nome de coluna e aba

Marcos Pinto
|
MVP
    14 fev 2014

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: {0}", 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

Henrique Gasparotto
|
MVP
    20 fev 2014

Olá Marcos, dessa forma ele está funcionando?

Marcos Pinto
|
MVP
    20 fev 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.

Henrique Gasparotto
|
MVP
    20 fev 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.

Marcos Pinto
|
MVP
    20 fev 2014

using (OleDbConnection conn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};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;
}

Marcos Pinto
|
MVP
    20 fev 2014

Meu problema agora é quando utilizo um Excel com mais de uma sheet, alguma sugestão?