Array
(
)

Erro ao ler dado do excel

Diego Gonçalves
   - 07 jan 2013

Olá amigos, boa tarde.
Gostaria que alguém pudesse em ajudar em um problema. Tenho uma aplicação que lê uma coluna em um arquivo excel. Essa coluna contém vários cpf''s. Minha aplicação consegue ler quase todos os cpf''s. O problema é que tem certos cpf''s que minha aplicação não consegue ler. Usando o break point, notei que ao invés de ler o próximo cpf, minha aplicação traz sempre o valor "" (vazio) da célula lida do excel. Outra coisa que também notei, é que isso so acontece com os cpf''s que não vem com formato. Os que vem no formato xxxxxxxxx-xx, o cpf é lido normalmente. Mas quando o cpf vem no formato xxx.xxx.xxx-xx ou xxxxxxxxxxx ou xxx.xxx.xxx/xx, o cpf não é lido. Não tenho noção do que possa ser, mas é estranho uma vez que a aplicação deveria ler somente o valor da coluna, sem se preocupar com a formatação do cpf.
É isso amigos, quem puder ajudar, desde já agradeço.
Abs!!

Robson Robsonalves.net
   - 07 jan 2013

Eu acho que o caso das formatações foi coincidência.

você tem certeza que não está lendo as colunas erradas?
Tipo estar lendo a coluna 0 e depois incrementar para a coluna 1...

Posta o seu código!
Abraços.

Diego Gonçalves
   - 07 jan 2013

O código é esse:

String strConn = "";
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + caminhoArqXls + ";Extended Properties=Excel 12.0;";

OleDbConnection objConn = new OleDbConnection(strConn);
// Abre a conexão com o OleDb
objConn.Open();

OleDbCommand objCmdSelect = new OleDbCommand(String.Format("SELECT * FROM [{0}]", this.getNomePlanilha(objConn)), objConn);

// Cria o Adapter
OleDbDataAdapter objAdapter = new OleDbDataAdapter();

// Passa o SELECT para o adapter
objAdapter.SelectCommand = objCmdSelect;

// Cria o DataSet que irá receber os dados
//DataSet objDataset = new DataSet();

DataTable dt = new DataTable();

// Passa os dados para o DataSet
objAdapter.Fill(dt);

//int cont = 0;
string cpf = string.Empty;
string valor = string.Empty;
StringBuilder dados = new StringBuilder();

DataTable funcionarios = new DataTable();
foreach (DataRow DR in dt.Rows)
{
cpf = DR[0].ToString().Trim().Replace(".", "").Replace("-", "").Replace("/", "");
valor = DR[1].ToString().Trim().Replace("R", "").Replace("$", "");

if (!cpf.Equals(string.Empty))
{
dados.Append(cpf);
dados.Append("(");
dados.Append(valor);
dados.Append(")");
dados.Append(";");
}
}

Robson Robsonalves.net
   - 07 jan 2013

Ta tudo certo... o nome da planilha está certo tmb né?

:/ estranho cara...

Diego Gonçalves
   - 07 jan 2013

sim, sim, ta tudo certinho. O mais estranho realmente é que a aplicação não está conseguindo ler o valor de uma determinada célula. As outras, a aplicação lê normalmente. Desconfio da formatação da planilha e da célula...

estranão...

Robson Robsonalves.net
   - 07 jan 2013

Passa toda a celula PDF pra o tipo texto...
Mas nunca vi isso acontecer!...