Данная статья является логическим продолжением статьи Выгружаем в EXCEL с помощью ADO, в ней пойдёт речь о типизации выгружаемых данных, а также о втором способе создания файла эксель (без использования объекта ADOX.Catalog).
Итак, сначала типизация колонок в создаваемом экселевском файле (для примера из первой статьи):
......
Table = Новый COMОбъект("ADOX.Table");
Table.Name = "Table";
// Допустимые типы
// adDouble = 5 Значение с плавающей точкой двойной точности
// adDAte = 7 Дата
// adCurrency = 6 Денежная сумма
// adBoolean = 11 Булево
// adVarWChar = 202 Символьная строка Unicode, заканчивающаяся NULL
// adLongVarWChar = 203 Длинное строковое значение
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "ЧисловойСтолбец";
Column.Type = 5;
Table.Columns.Append(Column);
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "ДатаСтолбец";
Column.Type = 7;
Table.Columns.Append(Column);
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "СтроковыйСтолбец";
Column.Type = 202;
Table.Columns.Append(Column);
Column = Неопределено;
Catalog.Tables.Append(Table);
Ну а теперь второй способ создания файла эксель(без использования объекта ADOX.Catalog):
СтрокаПодключения = "
|Provider=Microsoft.Jet.OLEDB.4.0;
|Data Source="+ИмяФайлаЭксельНовый+";
|Extended Properties=""Excel 8.0;HDR=YES"";";
Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionString = СтрокаПодключения;
Connection.Open();
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandText = "CREATE TABLE [МояТаблица] (Символьный char(255), Дата date, Целый int, Дробный float)";
Command.Execute();
Command.CommandText = "INSERT INTO [МояТаблица] (Символьный, Дата, Целый, Дробный) values ('АБВГДЕЁ', '12/4/1955', '1234567', '12345,6789')";
Command.Execute();
// А вот так можно удалить все данные на листе, при этом сам лист останется
//Command.CommandText = "DROP TABLE [МояТаблица]";
//Command.Execute();
Command = Неопределено;
Connection.Close();
Единственное чему я не нашел пока применения, так это оператору ALTER, ни в какой форме он у меня не заработал... а по документации с сайта microsoft должен ...
Вроде бы ничего не забыл и нигде не ошибся :) Вот такая небольшая и лаконичная статья получилась ...
P.S. И всё таки забыл ... :) Записи таблицы можно изменять следующим образом(вдруг кому понадобится):
Command.CommandText = "UPDATE [МояТаблица] SET Символы='йцукен' WHERE Целое=12345";
Command.Execute();
Мне НЕ УДАЛОСЬ :
1). Удалять записи. (DELETE FROM [МояТаблица] WHERE Символы='АБВГДЕЁ')
2). Изменять структуру таблицы путём добавления и удаления столбцов, а так же изменения их типа. (Операторы: ALTER TABLE [МояТаблица] DROP COLUMN Дата, ALTER TABLE [МояТаблица] ADD НоваяКолонка data)
ОГРОМНАЯ просьба если кому-то удастся выполнить данные операции (или другие НЕ ОПИСАННЫЕ в данных статьях) сообщите мне. Заранее благодарен.
Источник: http://www.obrabotki.com/1s-excel-ado-2/