Споделяне чрез


Изпълняване на SQL заявки за файлове на Excel

Въпреки че действията на Excel могат да се справят с повечето сценарии за автоматизация на Excel, SQL заявките могат да извличат и манипулират значителни количества данни на Excel по-ефективно.

Да предположим, че даден поток трябва да модифицира само регистрите на Excel, които съдържат определена стойност. За да постигнете тази функционалност без SQL заявки, ви трябват цикли, условни и множество действия на Excel.

Като алтернатива можете да реализирате тази функционалност със SQL заявки, като използвате само две действия, Отваряне на SQL връзка и Изпълнение на SQL команди.

Отваряне на SQL връзка към файл на Excel

Преди да изпълните SQL заявка, трябва да отворите връзка с файла на Excel, до който искате да получите достъп.

За да установите връзката, създайте нова променлива с име %Excel_File_Path% и я инициализирайте с пътя до файла на Excel. По желание можете да пропуснете тази стъпка и да използвате твърдо кодирания път на файла по-късно в потока.

Екранна снимка на действието Задаване на променлива, попълнено с пътя на файла на Excel.

Сега разположете действието Open SQL връзка и попълнете следния низ за връзка в неговите свойства.

Доставчик=Microsoft.ACE.OLEDB.12.0; източник на данни=%Excel_File_Path%; Разширени свойства="Excel 12.0 Xml;HDR=YES";

Бележка

За да използвате успешно представения низ за връзка, трябва да изтеглите и инсталирате Microsoft Access Database Engine 2010 Redistributable.

Екранна снимка на действието Open SQL връзка.

Отваряне на SQL връзка към защитен с парола файл на Excel

Изисква се различен подход при сценарии, при които изпълнявате SQL заявки в защитени с парола файлове на Excel. Действието Open SQL връзка не може да се свърже с защитени с парола файлове на Excel, така че трябва да премахнете защитата.

За да постигнете това, стартирайте файла на Excel с помощта на действието Стартиране на Excel . Файлът е защитен с парола, затова въведете съответната парола в полето Парола .

Екранна снимка на действието

След това разположете подходящите действия за автоматизация на потребителския интерфейс и навигирайте до File>Info>Protect Workbook>Encrypt with Password. Можете да намерите повече информация за автоматизацията на потребителския интерфейс и как да използвате съответните действия в Автоматизиране на настолните приложения.

Екранна снимка на действията на потребителския интерфейс, използвани за избор на опцията Шифроване с парола.

След като изберете Шифроване с парола, попълнете празен низ в изскачащия диалогов прозорец, като използвате полето Попълване на текст в действието на прозореца . За да попълните празен низ, използвайте следния израз: %""%.

Екранна снимка на текстовото поле Попълване в действието на прозореца.

За да натиснете бутона OK в диалоговия прозорец и да приложите промените, разположете бутона Натиснете в действие на прозореца .

Екранна снимка на бутона Натиснете в действие прозорец.

И накрая, разположете действието Close Excel , за да запишете незащитената работна книга като нов файл на Excel.

Екранна снимка на действието Затвори Excel с избрана опция Запиши документа като.

След като запишете файла, следвайте инструкциите в Отваряне на SQL връзка към файл на Excel, за да отворите връзка към него.

Когато манипулирането на файла на Excel завърши, използвайте действието Изтриване на файлове , за да изтриете незащитеното копие на файла на Excel.

Екранна снимка на действието Изтриване на файлове.

Четене на съдържанието на електронна таблица на Excel

Въпреки че действието Четене от работен лист на Excel може да чете съдържанието на работен лист на Excel, циклите могат да отнемат значително време, за да се повторят извлечените данни.

По-ефективен начин за извличане на конкретни стойности от електронни таблици е да третирате файловете на Excel като бази данни и да изпълнявате SQL заявки върху тях. Този подход е по-бърз и увеличава ефективността на потока.

За да извлечете цялото съдържание на електронна таблица, можете да използвате следната SQL заявка в действието Изпълнение на SQL команда .

SELECT * FROM [SHEET$]

Екранна снимка на Изпълнение на SQL команди, попълнени със заявка SELECT.

Бележка

За да приложите тази SQL заявка във вашите потоци, заменете контейнера SHEET с името на електронната таблица, до която искате да получите достъп.

За да извлечете редовете, които съдържат определена стойност в определена колона, използвайте следната SQL заявка:

SELECT * FROM [SHEET$] WHERE [COLUMN NAME] = 'VALUE'

Бележка

За да приложите тази SQL заявка във вашите потоци, заместете:

  • ЛИСТ с името на електронната таблица, до която искате да получите достъп.
  • ИМЕ НА КОЛОНА с колоната, съдържаща стойността, която искате да намерите. Колоните в първия ред на работния лист на Excel се идентифицират като имена на колони на таблицата.
  • VALUE със стойността, която искате да намерите.

Изтриване на данни от ред на Excel

Въпреки че Excel не поддържа SQL заявката DELETE, можете да използвате заявката UPDATE , за да зададете всички клетки на конкретен ред на Null.

По-точно, можете да използвате следната SQL заявка:

UPDATE [SHEET$] SET [COLUMN1]=NULL, [COLUMN2]=NULL WHERE [COLUMN1]='VALUE'

Екранна снимка на командите Изпълнение на SQL, попълнени със заявка UPDATE.

Докато развивате потока си, трябва да замените контейнера SHEET с името на електронната таблица, до която искате да получите достъп.

Контейнерите COLUMN1 и COLUMN2 представляват имената на колоните, които трябва да се обработят. Този пример има две колони, но в реален сценарий броят на колоните може да се различава. Колоните в първия ред на работния лист на Excel се идентифицират като имена на колони на таблицата.

Частта [COLUMN1]='VALUE' на заявката определя реда, който искате да актуализирате. Във вашия поток използвайте името на колоната и стойността, въз основа на която комбинацията описва редовете уникално.

Извличане на данни на Excel с изключение на конкретен ред

В някои сценарии може да се наложи да извлечете цялото съдържание на електронна таблица на Excel, с изключение на конкретен ред.

Удобен начин да постигнете това е да зададете стойностите на нежелания ред на null и след това да извлечете всички стойности, с изключение на нулевите.

За да промените стойностите на конкретен ред в електронната таблица, можете да използвате SQL заявка UPDATE , както е представено в Изтриване на данни от ред на Excel:

UPDATE [SHEET$] SET [COLUMN1]=NULL, [COLUMN2]=NULL WHERE [COLUMN1]='VALUE'

Екранна снимка на командите Изпълнение на SQL, попълнени със заявка UPDATE.

След това изпълнете следната SQL заявка, за да извлечете всички редове на електронната таблица, които не съдържат празни стойности:

SELECT * FROM [SHEET$] WHERE [COLUMN1] IS NOT NULL OR [COLUMN2] IS NOT NULL

Контейнерите за COLUMN1 и COLUMN2 представляват имената на колоните, които трябва да се обработят. Този пример има две колони, но в реална таблица броят на колоните може да се различава. Всички колони в първия ред на работния лист на Excel са идентифицирани като имена на колони на таблицата.