string strSQL = "SELECT * FROM ["+ListName+"$]";
OdbcConnection cn = new OdbcConnection();
OdbcCommand ExcellCommand = new OdbcCommand(strSQL, cn);
cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" + FileName;
OdbcDataReader ExcellDataReader;
cn.Open();
ExcellDataReader = ExcellCommand.ExecuteReader();
while (ExcellDataReader.Read())
{
//.....
}
Работа с Exel
Заранее спасибо
1) через объектную модель.
Для этого необходимо добавить в проект библиотеку Экселя, через addreference, вкладка COM, создать объект класса ApplicationClass(класс приложения), Workbook(рабочая книга) Worksheet(лист эксель, на котором непосредственно находятся данные) и собственно работать с ними. Подробно можно не описывать, т.к. все названия методов и свойств интуитивно понятны, в случае чего всегда можно обратиться к великому и ужасному msdn-у. Только есть одна хитрость при освобождении ресурсов. Когда работа с экселем завершена, чтобы эксель не оставался в памяти, все переменные которые использовались при работе нужно удалять вручную.
2) через одбц. расписывать не буду, приведу фрагмент кода.
Код:
Много примеров по работе с экселем и вообще офисом есть на codeproject.com
2. А если имеется таблица нетипичной струтуры, допустим есть ячейка, которая получилась путём объединения нескольких, тогда как быть?
2. Самый лучший способ - проверить =) Но мне кажется на группировку ячеек драйвер не обращает внимания.
2. а как проверить, как вообще это читать. Допустим, в таблице из двух колонок есть одна запись в виде объединённых ячеек, чтение таблицы произвожу при помощи SqlDataReader, как он вообще на это отреагирует???
Не понял суть вопроса.
Нет никаких проблем. Елси ячейки склеены, то данные надо читать/писать в левый верхний угол. Допустим, если склеены ячейки в области A1:C2, то значение "большой" ячейки хранится в A1.
т.е. допустим, я читаю таблицу из двух колонок и одна из записей является записью, образованной объединением двух ячеек, тогда получается, что данная запись будет представлять собой (для OleDb) одну заполненную ячейку, а другая со значением null. Так?
Так точно - будет null
Спасибо, что вы вытерпели меня :)