Как написать программу для работы с таблицами

Довольно долго я обходился выгрузкой данных в Excel, но мода меняется, пользователи хотят в облака.

Начав переводить ряд проектов на Python, решил, что самое время сменить (или дополнить) Excel чем-то более современным.

Когда я впервые столкнулся с необходимостью работы c таблицами Google из Python, то пребывал в иллюзии, что все это можно сделать в пару кликов. Реальность оказалась менее радужной, но другого глобуса у нас нет.

Мне очень помогли статьи:

  • Генерируем красивую Google-таблицу из своей программы (используя Google Sheets API v4)
  • Начинаем работать с Google Sheets API v4/
  • Работаем с API Google Drive с помощью Python

Возможно, я просто шел длинным путем – буду рад, если вы меня поправите.

Все действия выполнялись на компьютере с Windows + Python 3.6.6, также использовался Jupyter Notebook.

Основные трудности у меня возникали на этапе предварительных настроек. Найти работоспособный код не представляет особого труда.

Уроки Python / Работа с файлами Excel считываем данные и формулы

Код, использованный в статье, доступен в репозитории

Регистрация в сервисах Google и установка библиотек

Для работы с таблицами нужно зарегистрироваться на Google, настроить проект и установить необходимые библиотеки.

Сначала нужно зарегистрироваться на gmail.com (это вы можете сделать самостоятельно). Потом нужно создать проект (так Google предоставляет доступ к своим сервисам).

Это долгий и нудный процесс, который позволяет понять, почему интерфейсы от Google называют не самыми удобными и интуитивно понятными (некоторые считают, что социальная сеть Google+ не взлетела именно по этой причине).

Для этого зайдите на страницу console.developers.google.com/cloud-resource-manager и нажать «Создать проект»

Введите имя проекта и нажмите «Создать»

В обновленном списке проектов зайдите в меню «Права доступа»

В открывшемся окне нажмите «Добавить», внесите свой email с домена gmail.com и выберите группу «Проект» — «Владелец»

Может показаться странным, что вы создали проект но вынуждены сами себе выдавать права. И это на самом деле странно, но именно такой путь пришлось пройти на момент написания этого курса, чтобы все начало работать как надо.

Выберите на своем проекте меню «Настройки»

В открывшемся окне выберите «Сервисные аккаунты», а затем «Создать сервисный аккаунт»

Введите название аккаунта и нажмите «Создать»

Работа с таблицами на Mac в программе Numbers

Выберите роль «Владелец» и нажмите «Продолжить»

В появившемся окне нажмите «Создать ключ»

Выберите тип ключа «json» и нажмите «Создать»

Будет создан и сразу же скачан файл с ключами. Сохраните его, именно благодаря ему мы сможем получать доступ к сервисам Google.

Нажмите на кнопку с тремя горизонтальными штрихами, слева от надписи «Google APIs», выберите пункт «API и сервисы», а в нем подпункт «Панель управления».

В открывшемся окне нажмите «Включить API и сервисы»

Введите в строку поиска «google drive» и кликните на сервисе «Google Drive API»

Сайт уведомит вас, что API включено и предупредит, что нужно создать учетные данные. Игнорируйте это предупреждение (ведь мы уже создали сервисный аккаунт).

Снова заходите в панель управления

В открывшемся окне нажмите «Включить API и сервисы»

Введите в строку поиска «sheet» и кликните на сервисе «Google Sheets API»

Убедитесь, что это API подключено. Оно должно включиться автоматически, при подключении Google Drive API. Если оно подключено, вы увидите кнопку «Управление API», если нет — кнопку «Включить». Включите его, при необходимости.

Выберите на своем проекте меню «Настройки»

В открывшемся окне выберите «Сервисные аккаунты», а затем скопируйте и сохраните email сервисного аккаунта. Он пригодится вам, чтобы выдавать доступ к таблицам.

Теперь переходим к установке библиотек. Выполните в консоли команду

pip3 install —upgrade google-api-python-client
pip3 install oauth2client

Возможно, что при запуске второй команды вы получите сообщение, что библиотека oauth2client уже установлена.

Нажмите правую кнопку мышки и выберите «Сохранить как»

Сохраните файл под именем quickstart.py

и запустите его командой

python quickstart.py

Откроется новая страница в браузере (возможно, он скажет, что страница небезопасная, но смело идите вперед) и вам надо будет принять условия.

На этом наш путь завершен.

Заполнение и форматирование таблицы

Создадим первую таблицу

# Подключаем библиотеки import httplib2 import apiclient.discovery from oauth2client.service_account import ServiceAccountCredentials CREDENTIALS_FILE = ‘seraphic-effect-248407-7ac2c44ec709.json’ # Имя файла с закрытым ключом, вы должны подставить свое # Читаем ключи из файла credentials = ServiceAccountCredentials.from_json_keyfile_name(CREDENTIALS_FILE, [‘https://www.googleapis.com/auth/spreadsheets’, ‘https://www.googleapis.com/auth/drive’]) httpAuth = credentials.authorize(httplib2.Http()) # Авторизуемся в системе service = apiclient.discovery.build(‘sheets’, ‘v4’, http = httpAuth) # Выбираем работу с таблицами и 4 версию API spreadsheet = service.spreadsheets().create(body = < ‘properties’: , ‘sheets’: [>>] >).execute() spreadsheetId = spreadsheet[‘spreadsheetId’] # сохраняем идентификатор файла print(‘https://docs.google.com/spreadsheets/d/’ + spreadsheetId)

Если все прошло без ошибок — на экран будет выведена ссылка на таблицу.

В этой ссылки использован идентификатор файла, мы сохраняем его в переменной spreadsheetId и будем использовать в дальнейшем.

Читайте также:
Youglish com как пользоваться программой

Переходите по ней. Google сообщит вам, что у вас нет доступа

Не запрашивайте разрешение! Вам придет уведомление, что невозможно доставить письмо с запросом на адрес, который сам Google назначил системному аккаунту. А изменить этот адрес нельзя. Возможно, это не работает только в бесплатном режиме.

driveService = apiclient.discovery.build(‘drive’, ‘v3’, http = httpAuth) # Выбираем работу с Google Drive и 3 версию API access = driveService.permissions().create( fileId = spreadsheetId, body = , # Открываем доступ на редактирование fields = ‘id’ ).execute()

Теперь у вас есть доступ, не закрывайте таблицу, мы будем управлять ею и сразу же смотреть на изменения.

У каждого документа есть свой код — spreadsheetId — именно от отображается в адресной строке, когда мы открываем таблицу в браузере (в URL-е страницы с открытой таблицей он находится между «https://docs.google.com/spreadsheets/d/» и «/edit#gid=0»).

Создание простого приложения для работы с данными с помощью ADO.NET

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

Наборы данных и связанные классы — это устаревшие технологии .NET с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти при отключении приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешной технологией, мы рекомендуем использовать Entity Framework Core в новых приложениях .NET. Платформа Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой программный интерфейс.

При создании приложения, которое работает с данными в базе данных, необходимо выполнить такие основные задачи, как определение строк подключения, вставка данных и выполнение хранимых процедур. Следуя этой статье, вы узнаете, как взаимодействовать с базой данных из простого приложения Windows Forms «формы по данным» с помощью Visual C# или Visual Basic и ADO.NET. Все технологии данных .NET, включая наборы данных, LINQ to SQL и Entity Framework, в конечном итоге выполняют действия, которые очень похожи на описанные в этой статье.

В этой статье демонстрируется простой способ быстрого получения данных из базы данных. Если приложению нужно изменять данные нетривиальными способами и обновлять базу данных, следует рассмотреть возможность использования Entity Framework и привязки данных для автоматической синхронизации элементов управления пользовательского интерфейса с изменениями в базовых данных.

С целью упрощения код не включает обработку исключений для выполнения в рабочей среде.

Полный код для этого руководства можно получить в репозитории GitHub документации По Visual Studio на C# и Visual Basic.

Предварительные требования

Для создания приложения вам потребуются следующие компоненты.

  • приведенному.
  • SQL Server Express LocalDB. Если у вас нет SQL Server Express LocalDB, его можно установить на странице загрузки SQL Server.

В этом разделе предполагается, что вы знакомы с основными функциями интегрированной среды разработки Visual Studio и можете создавать Windows Forms приложение, добавлять формы в проект, помещать кнопки и другие элементы управления в формы, задавать свойства элементов управления и кодировать простые события. Если вы не знакомы с этими задачами, прежде чем приступить к работе с этим руководством, рекомендуется выполнить инструкции из руководства Создание приложения Windows Forms в Visual Studio с помощью Visual Basic или Создание приложения Windows Forms в Visual Studio с помощью C#.

Настройка образца базы данных

Создайте образец базы данных, выполнив следующие действия.

  1. В Visual Studio откройте окно Серверная Обозреватель.
  2. Щелкните правой кнопкой мыши подключения к данным и выберите Создать базу данных SQL Server.
  3. В текстовом поле Имя сервера введите (localdb)mssqllocaldb.
  4. В текстовом поле Новое имя базы данных введите Sales и нажмите кнопку ОК. Пустая база данных Sales создается и добавляется в узел Подключения к данным в сервере Обозреватель.
  5. Щелкните правой кнопкой мыши подключение Данные о продажах и выберите Создать запрос. Откроется окно редактора запросов.
  6. Скопируйте скрипт Transact-SQL Sales в буфер обмена.
  7. Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку Выполнить . Через некоторое время запрос завершает выполнение и создаются объекты базы данных. База данных содержит две таблицы: Customer и Orders. Эти таблицы изначально не содержат данных, но вы можете добавить данные при запуске создаваемого приложения. База данных также содержит четыре простые хранимые процедуры.

Создание форм и добавление элементов управления

  1. Создайте проект для приложения Windows Forms и назовите его SimpleDataApp. Visual Studio создает проект и несколько файлов, включая пустую форму Windows Forms с именем Form1.
  2. Добавьте две формы Windows Forms в проект, чтобы он включал три формы, и назначьте им следующие имена:
    • Навигация
    • NewCustomer
    • FillOrCancel
    • Для каждой формы добавьте текстовые поля, кнопки и другие элементы управления, которые отображаются на рисунках ниже. Для каждого элемента управления задайте свойства, указанные в таблицах.

    Примечание Элементы управления «группа» и «надпись» обеспечивают большую ясность, но не используются в коде.

    Форма навигацииДиалоговое окно

    Элементы управления формы навигацииСвойства
    Кнопка Name = btnGoToAdd
    Кнопка Name = btnGoToFillOrCancel
    Кнопка Name = btnExit

    Форма NewCustomer

    Добавление нового клиента и размещение заказа

    Форма FillOrCancel

    заполнение или отмена заказов

    Сохранение строки подключения

    Когда приложение пытается открыть подключение к базе данных, оно должно иметь доступ к строке подключения. Чтобы не вводить строку вручную в каждой форме, сохраните строку в файле App.config проекта и создайте метод, который возвращает строку при вызове метода из любой формы в приложении.

    Читайте также:
    Как приобрести программу 1 с

    Строку подключения можно найти, щелкнув правой кнопкой мыши подключение Данные о продажах в Обозреватель сервера и выбрав Свойства. Найдите свойство ConnectionString , а затем нажмите клавиши CTRL+A, CTRL+C , чтобы выбрать и скопировать строку в буфер обмена.

    Снимок экрана строки подключения в Settings.settings

    1. Если вы используете C#, в Обозреватель решений разверните узел Свойства в проекте, а затем откройте файл Settings.settings. Если вы используете Visual Basic, в Обозреватель решений щелкните Показать все файлы, разверните узел Мой проект и откройте файл Settings.settings.
    2. В столбце Имя введите connString .
    3. В списке Тип выберите (Строка подключения).
    4. В списке Область выберите Приложение.
    5. В столбце Значение введите строку подключения (без кавычек), а затем сохраните изменения.

    В реальном приложении строку подключения следует хранить безопасно, как описано в разделе Строки подключения и файлы конфигурации.

    Написание кода для форм

    В этом разделе содержатся краткие сведения о том, что делает каждая форма. Он также предоставляет код, определяющий базовую логику при нажатии кнопки на форме.

    Форма навигации

    Форма навигации открывается при запуске приложения. Кнопка Добавить учетную запись открывает форму NewCustomer. Кнопка Выполнение или отмена заказов открывает форму FillOrCancel. Кнопка Выход закрывает приложение.

    Преобразование формы навигации в начальную форму

    При использовании C# в обозревателе решений откройте файл Program.cs и измените строку Application.Run на следующую: Application.Run(new Navigation());

    Если вы используете Visual Basic, в Обозреватель решений откройте окно Свойства, перейдите на вкладку Приложение, а затем выберите SimpleDataApp.Navigation в списке форм запуска.

    Создание автоматически созданных обработчиков событий

    Дважды щелкните три кнопки в форме навигации, чтобы создать пустые методы обработчика событий. При двойном щелчке кнопок также добавляется автоматически созданный код в файл кода Designer, который позволяет нажатию кнопки вызывать событие.

    Если пропустить действие двойного щелчка в конструкторе и просто скопировать код и вставить его в файлы кода, не забудьте задать для обработчика событий правильный метод. Это можно сделать в окне Свойства . Перейдите на вкладку События (используйте кнопку панели инструментов молнии) и найдите обработчик щелчка .

    Добавление кода для логики формы навигации

    На кодовой странице формы навигации заполните текст метода для обработчиков событий нажатия трех кнопок, как показано в следующем коде.

    /// /// Opens the NewCustomer form as a dialog box, /// which returns focus to the calling form when it is closed. /// private void btnGoToAdd_Click(object sender, EventArgs e) < Form frm = new NewCustomer(); frm.Show(); >/// /// Opens the FillorCancel form as a dialog box. /// private void btnGoToFillOrCancel_Click(object sender, EventArgs e) < Form frm = new FillOrCancel(); frm.ShowDialog(); >/// /// Closes the application (not just the Navigation form). /// private void btnExit_Click(object sender, EventArgs e)
    »’ »’ Opens the NewCustomer form as a dialog box, which returns focus to the calling form when it closes. »’ Private Sub btnGoToAdd_Click(sender As Object, e As EventArgs) Handles btnGoToAdd.Click Dim frm As Form = New NewCustomer() frm.Show() End Sub »’ »’ Opens the FillOrCancel form as a dialog box. »’ Private Sub btnGoToFillOrCancel_Click(sender As Object, e As EventArgs) Handles btnGoToFillOrCancel.Click Dim frm As Form = New FillOrCancel() frm.ShowDialog() End Sub »’ »’ Closes the application (not just the navigation form). »’ Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click Me.Close() End Sub

    Код для этого руководства доступен на C# и Visual Basic. Чтобы переключить язык кода на этой странице с C# на Visual Basic, используйте переключатель языка кода в верхней части страницы справа.

    Форма NewCustomer

    При вводе имени клиента и нажатии кнопки Создать учетную запись форма NewCustomer создает учетную запись клиента и SQL Server возвращает значение IDENTITY в качестве нового идентификатора клиента. Затем можно разместить заказ для новой учетной записи, указав сумму и дату заказа и нажав кнопку Разместить заказ .

    Создание автоматически созданных обработчиков событий

    Создайте пустой обработчик событий Click для каждой кнопки в форме СоздатьНастройка, дважды щелкнув каждую из четырех кнопок. При двойном щелчке кнопок также добавляется автоматически созданный код в файл кода Designer, который позволяет нажатию кнопки вызывать событие.

    Добавление кода для логики формы NewCustomer

    Чтобы завершить логику формы NewCustomer, выполните следующие действия.

    System.Data.SqlClient Принесите пространство имен в область, чтобы вам не нужно было полностью указывать имена его членов.

    using System.Data.SqlClient;
    Imports System.Data.SqlClient

    Добавьте в класс некоторые переменные и вспомогательные методы, как показано в следующем коде.

    // Storage for IDENTITY values returned from database. private int parsedCustomerID; private int orderID; /// /// Verifies that the customer name text box is not empty. /// private bool IsCustomerNameValid() < if (txtCustomerName.Text == «») < MessageBox.Show(«Please enter a name.»); return false; >else < return true; >> /// /// Verifies that a customer ID and order amount have been provided. /// private bool IsOrderDataValid() < // Verify that CustomerID is present. if (txtCustomerID.Text == «») < MessageBox.Show(«Please create customer account before placing order.»); return false; >// Verify that Amount isn’t 0. else if ((numOrderAmount.Value < 1)) < MessageBox.Show(«Please specify an order amount.»); return false; >else < // Order can be submitted. return true; >> /// /// Clears the form data. /// private void ClearForm()
    ‘ Storage for ID values returned from the database.

    Читайте также:
    Решение оду методом эйлера программа

    Private parsedCustomerID As Integer Private orderID As Integer »’ »’ Verifies that the customer name text box is not empty. »’ Private ReadOnly Property IsCustomerNameValid As Boolean Get If txtCustomerName.Text = «» Then MessageBox.Show(«Please enter a name.») Return False Else Return True End If End Get End Property »’ »’ Verifies the order data is valid. »’ Private Function IsOrderDataValid() As Boolean ‘ Verify that CustomerID is present. If txtCustomerID.Text = «» Then MessageBox.Show(«Please create a customer account before placing order.») Return False ‘ Verify that order amount isn’t 0. ElseIf (numOrderAmount.Value < 1) Then MessageBox.Show(«Please specify an order amount.») Return False Else ‘ Order can be submitted. Return True End If End Function »’ »’ Clears values from controls. »’ Private Sub ClearForm() txtCustomerName.Clear() txtCustomerID.Clear() dtpOrderDate.Value = DateTime.Now numOrderAmount.Value = 0 Me.parsedCustomerID = 0 End Sub

    Заполните текст метода для обработчиков событий нажатия четырех кнопок, как показано в следующем коде.

    Форма FillOrCancel

    Форма FillOrCancel выполняет запрос для возврата заказа при вводе идентификатора заказа, а затем нажмите кнопку Найти заказ . Возвращенная строка отображается в сетке данных только для чтения. Вы можете пометить заказ как отмененный (X), нажав кнопку Отменить заказ , или вы можете пометить заказ как заполненный (F) при нажатии кнопки Заполнить заказ . Если снова нажать кнопку Найти заказ , появится обновленная строка.

    Создание автоматически созданных обработчиков событий

    Создайте пустые обработчики событий Click для четырех кнопок в форме FillOrCancel, дважды щелкнув кнопки. При двойном щелчке кнопок также добавляется автоматически созданный код в файл кода Designer, который позволяет нажатию кнопки вызывать событие.

    Добавление кода для логики формы FillOrCancel

    Чтобы выполнить логику формы FillOrCancel, выполните следующие действия.

    Принесите следующие два пространства имен в область, чтобы вам не нужно было полностью указывать имена их участников.

    using System.Data.SqlClient; using System.Text.RegularExpressions;
    Imports System.Data.SqlClient Imports System.Text.RegularExpressions

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

    ‘ Storage for OrderID. Private parsedOrderID As Integer »’ »’ Verifies that OrderID is valid. »’ Private Function IsOrderIDValid() As Boolean ‘ Check for input in the Order ID text box. If txtOrderID.Text = «» Then MessageBox.Show(«Please specify the Order ID.») Return False ‘ Check for characters other than integers. ElseIf Regex.IsMatch(txtOrderID.Text, «^D*$») Then ‘ Show message and clear input. MessageBox.Show(«Please specify integers only.») txtOrderID.Clear() Return False Else ‘ Convert the text in the text box to an integer to send to the database. parsedOrderID = Int32.Parse(txtOrderID.Text) Return True End If End Function

    Заполните текст метода для обработчиков событий нажатия четырех кнопок, как показано в следующем коде.

    Тестирование приложения

    Запустите приложение и попробуйте создать несколько клиентов и заказов, чтобы убедиться, что все работает должным образом. Чтобы убедиться, что база данных обновлена с учетом внесенных изменений, откройте узел Таблицы в Обозреватель сервера, щелкните правой кнопкой мыши узлы Клиенты и Заказы и выберите пункт Показать данные таблицы.

    См. также

    Источник: learn.microsoft.com

    Как написать программу для работы с таблицами

    Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

    Последнее обновление: 31.10.2015

    Ранее мы рассмотрели, как удобно загружать данные в приложении Windows Forms в элемент DataGridView через DataSet. Теперь определим полнофункциональную форму, через которую мы сможем производить все стандартные CRUD операции в базе данных.

    Итак, определим форму, на которой будет элемент DataGridView и три кнопки для добавления, удаления и сохранения изменений. Форма в итоге будет выглядеть примерно следующим образом:

    DataSet и DataGridView

    Код формы будет выглядеть следующим образом:

    Здесь для добавления объекта мы будем обращаться к хранимой процедуре sp_CreateUser, которая была добавлена в базу данных в прошлой теме.

    В конструкторе данные загружаются в DataSet, первая таблица которого устанавливается в качестве источника данных для dataGridView1:

    dataGridView1.DataSource = ds.Tables[0];

    Также в конструкторе устанавливается полное выделение строки и запрет на ручное добавление новых строк:

    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.AllowUserToAddRows = false;

    В обработчике кнопки добавления создается новая строка, которая добавляется в таблицу объекта DataSet. И так как мы ранее установили привязку к источнику данных, то автоматически новая строка также будет добавляться и в dataGridView1:

    private void addButton_Click(object sender, EventArgs e) < DataRow row = ds.Tables[0].NewRow(); // добавляем новую строку в DataTable ds.Tables[0].Rows.Add(row); >

    В обработчике кнопки удаления удаляются выделенные строки в dataGridView1. Опять же в силу привязки к источнику данных будет также происходить удаление и из таблицы в DataSet:

    private void deleteButton_Click(object sender, EventArgs e) < foreach(DataGridViewRow row in dataGridView1.SelectedRows) < dataGridView1.Rows.Remove(row); >>

    Для обновления на не нужна никакая кнопка, так как мы можем нажать на любую ячейку таблицы (кроме заблокированного для изменения столбца Id) и изменить в ней данные. Однако сами по себе добавление новой строки, удаление строк, изменение ячеек ни как автоматически не отразятся на базе данных. И чтобы бд синхронизировалась, пользователю надо будет нажать на кнопку сохранения, обработчик которой выглядит следующим образом:

    Как в прошлой теме здесь устанавливается у адаптера команда на добавление InsertCommand и затем вызывается метод Update() . В итоге мы можем добавить несколько строк, удалить, изменить, и потом один раз мы нажмем на кнопку, и все изменения будут применены к базе данных.

    Источник: metanit.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru