читать БД как весь текст - PullRequest
       3

читать БД как весь текст

0 голосов
/ 27 августа 2010

Я читаю файл xlsx как БД, чтобы выполнить некоторую работу

я заметил, что некоторые поля читаются как int и date, хотя я просто хочу, чтобы все это отображалось как текст есть ли возможность переопределить эту функцию?

Код ниже

(не стесняйтесь указывать на все, что я мог бы сделать лучше с моим кодом)

  private DataSet ExceltoDT(OpenFileDialog dialog)
    {
        try
        {
            string connst = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dialog.FileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=NO\";";
            string sheet = "Sheet1$";
            string strSQL = "SELECT * FROM [" + sheet + "]";
            //string Table = "081710";
            OleDbConnection xlsdb = new OleDbConnection(connst);
            xlsdb.Open();
            OleDbDataAdapter adp = new OleDbDataAdapter(strSQL, xlsdb);
            DataSet ds2 = new DataSet();
            adp.Fill(ds2);


            adp.Dispose();
            xlsdb.Close();
            xlsdb.Dispose();

            return ds2;
        }
        catch (StackOverflowException stack_ex2)
        {
            MessageBox.Show("(2007 Excel file) Stack Overflowed!" + "\n" + stack_ex2.Message);
            return null;

        }
        catch (OleDbException ex_oledb2)
        {
            MessageBox.Show("An OleDb Error Thrown!" + "\n" + ex_oledb2.Message);
            return null;
        }
    }

1 Ответ

1 голос
/ 27 августа 2010

Добавьте ' (апостроф) перед каждым значением ячейки. Это скажет Excel «Обрабатывать это как текст, даже если он выглядит как число / дата / что угодно».

Не то, что вы хотите? Тогда не используйте разъем DB, потому что он сильно сломан. Вы заметите это, когда у вас есть столбец с ячейками, которые смешаны. В этом случае драйвер БД просматривает первые 8 строк и устанавливает тип для большинства найденных типов и возвращает NULL для всего в этом столбце, который не подходит. Вы можете исправить это , взломав ваш реестр.

Вместо этого используйте OLE API, чтобы открыть рабочую книгу, а затем начать оттуда, читая строку за строкой, конвертируя необходимые данные (этот длинный список сообщений должен содержать все возможные способы доступа к Excel из C # плюс все ошибки и проблемы, с которыми вы можете столкнуться).

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