Загрузка таблицы - PullRequest
       19

Загрузка таблицы

0 голосов
/ 09 июля 2010

Странная проблема при загрузке электронной таблицы через C #.

Вот пример таблицы, которую я использую:

JournalISSN
-----------
1650327
223956
1651781
9254927
3064530
9209964
924977X <- this is causing an error
3768716

Мой код загрузки (для краткости)

string connectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source="
            + Server.MapPath("/admin/journals/upload.xls") + "; Extended Properties=\"Excel 8.0;HDR=YES;\"";

        DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

using (DbCommand Command = Connection.CreateCommand())
            {
                Command.CommandText = "SELECT [JournalISSN], JournalTitle, JournalDescription, ImpactFactor, Psychology "
                    + "FROM [Sheet1$]";

using (DbDataReader DataReader = Command.ExecuteReader())
{
     while (DataReader.Read())
     {
           Response.Write(string.IsNullOrEmpty(DataReader["JournalISSN"].ToString()) + "<br/>");
      }
}

Теперь, что происходит, когда DataReader попадает в строку с «X» в столбце «JournalISSN», он возвращает True (то есть, он пуст / пуст), все остальные столбцы возвращают false. Таким образом, проблема заключается в том, что всякий раз, когда столбец содержит символ, который не является числовым, он не извлекается во время загрузки.

Несколько вещей, которые я пробовал:

  • Перемещение 'X' в разные позиции в тексте (например, 111X111)
  • Переход на другую букву
  • Удаление ячейки и повторный запуск
  • Установка типа формата в Excel на «Общий» - применяется ко всем строкам.

Буду благодарен за любую помощь / понимание того, почему это происходит.

Ура, Шон

1 Ответ

2 голосов
/ 09 июля 2010

Возможно, вам повезет, если вы измените строку подключения, чтобы включить расширенное свойство IMEX=1.Использование IMEX = 1 заставит ADO обрабатывать каждый столбец как строку, а не пытаться идентифицировать тип данных.Вы можете найти более подробную информацию здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...