|
![]() |
#1 |
MCITP
|
Да, это всё сработает отлично. Т.е. открыть файл, пересохранить его в нормальном формате Excel.
Но задача состоит в том, чтобы не производить данных манипуляций, а обработать файл таким какой он есть. Т.е. файл будет приходить постоянно, а формат его никто менять не будет. Грубо говоря, необходимо следущее - обработать файл таким какой он есть непосредственно средствами аксапты, чтобы пользователь нажал кнопку, например, "Импорт" и всё. Возможно, я использую не те инструменты для данной обработки. Поэтому жду советов как это сделать правильнее. |
|
![]() |
#2 |
Moderator
|
Ну, ёлка-палка... Дык, его формат менять не надо. Откройте в Excel, "сохраните как" в Excel, прочитайте новый файл классом gl00mie и удалите новый файл. Всё - конечно, программно, не вручную. И всё незаметно для пользователя.
|
|
![]() |
#3 |
MCITP
|
Цитата:
Откройте в Excel, "сохраните как" в Excel....Всё - конечно, программно, не вручную
![]() Также не понятно одно - если мы откроем его для сохранения, то зачем нам его сохранять. Лучше взять и обработать. Только не понятно как. |
|
![]() |
#4 |
Moderator
|
Запишите макрос в Excel, т.е. в пустом Экселе включите запись макро, далее откройте свой файл, сохраните его как xls, закройте файл, выключите запись макро. Получившийся код VBA несите сюда - я помогу его оформить на X++.
Импорт при помощи ADO работает с СОХРАНЕННЫМ файлом на диске! (этот файл как бы БД для него). К тому же, для несохраненного файла вы не сможете указать параметры строки подключения. Поэтому сохранение обязательно при использовании класса gl00mie. |
|
![]() |
#5 |
MCITP
|
Цитата:
Сообщение от Gustav
![]() Запишите макрос в Excel, т.е. в пустом Экселе включите запись макро, далее откройте свой файл, сохраните его как xls, закройте файл, выключите запись макро. Получившийся код VBA несите сюда - я помогу его оформить на X++.
Импорт при помощи ADO работает с СОХРАНЕННЫМ файлом на диске! (этот файл как бы БД для него). К тому же, для несохраненного файла вы не сможете указать параметры строки подключения. Поэтому сохранение обязательно при использовании класса gl00mie. Но сомневаюсь, что макрос должен показать как он преобразует файл в удобочитаемый вид для Excel. Собственно вот и макрос. Просто открытие: Sub Test() ' ' Test Макрос ' ' ChDir "C:\" Workbooks.Open Filename:="C:\reportSmall.xls" End Sub Открытие с сохранением: Sub TestFull() ' ' TestFull Ìàêðîñ ' ' ChDir "C:\" Workbooks.Open Filename:="C:\reportSmall.xls" ActiveWorkbook.SaveAs Filename:="C:\reportSmall.xlsx", FileFormat:= _ xlOpenXMLWorkbook, CreateBackup:=False End Sub Последний раз редактировалось GBH; 27.07.2011 в 12:58. |
|
![]() |
#6 |
Moderator
|
Как-то так. Предполагается, что в Excel 2007+ мы сохраняем файл в формате Excel 2003. Открывать дальше Jet'ом 4 (не ACE).
X++: { COM xlApplication; COM xlWorkbooks, xlWorkbook; ; xlApplication = new COM('Excel.Application'); xlWorkbooks = xlApplication.Workbooks(); xlWorkbook = xlWorkbooks.Open(@'C:\reportSmall.xls'); xlWorkbook.SaveAs(@'C:\reportSmall_TEMP.xls', 56); // 56 = xlExcel8 xlWorkbook.Close(false); } |
|
|
За это сообщение автора поблагодарили: GBH (1). |
![]() |
#7 |
MCITP
|
Цитата:
Сообщение от Gustav
![]() Как-то так. Предполагается, что в Excel 2007+ мы сохраняем файл в формате Excel 2003. Открывать дальше Jet'ом 4 (не ACE).
X++: { COM xlApplication; COM xlWorkbooks, xlWorkbook; ; xlApplication = new COM('Excel.Application'); xlWorkbooks = xlApplication.Workbooks(); xlWorkbook = xlWorkbooks.Open(@'C:\reportSmall.xls'); xlWorkbook.SaveAs(@'C:\reportSmall_TEMP.xls', 56); // 56 = xlExcel8 xlWorkbook.Close(false); } Насчёт Jet не опечатка? |
|