Ім'я файлу: МаричТетянаТВ42.docx
Розширення: docx
Розмір: 577кб.
Дата: 26.12.2020
скачати

Зміст

Вступ 5

1Опис інформаційної системи 6

2Модель бази даних 7

2.1Концептуальна модель бази даних 7

2.2Фізична модель бази даних 8

2.3Опис бази даних 8

2.4Приклади заповнення таблиць 9

3Опис проекту та інтерфейсу користувача 11

3.1Використані програмні засоби 11

3.2Функціональна модель програмного забезпечення 11

3.3Структура програмного коду системи 12

3.4Керівництво користувача 13

Висновки 23

Список використаних джерел 24

Додаток 25

Вступ

Останніми десятиліттями відбувається помітний розвиток інформаційних технологій та їх впровадження в життя людей. Оскільки дані технології дають можливість ефективно керувати даними та процесами, підприємці швидкими темпами переходять на інформаційні системи, що дають змогу продуктивно керувати бізнесом.

Метою курсової роботи є створення інформаційної системи, що дає змогу легко записувати, редагувати та видаляти інформацію про договори, клієнтів та їх автомобілів, види ремонтів та їх складові, а також майстерні, які займаються обслуговуванням. Система повинна фільтрувати договори по періоду, за який договори повинні бути виконані.

Система має включати взаємодію з іншими програмними продуктами, тобто забезпечувати експорт даних.

Простий інтерфейс мусить дозволяти швидко отримати навички продуктивного користування програмою.

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

Для забезпечення цілісності даних системі належить бути захищеною процесом авторизації, який не тільки контролює процес входу, але і

  1. Опис інформаційної системи


Авторемонтні майстерні (АРМ) проводять ремонт автомобілів.
 Майстерні укладають договори на ремонт автомобілів з певною організацією, в цьому договорі вказуються найменування організації, П.І.Б. відповідального, телефон, розрахунковий рахунок. Одна організація може одночасно укладати декілька договорів. Для кожного автомобіля організації створюється окремий договір на ремонтні роботи. Договір також містить інформацію про саму майстерню, яка обслуговує клієнта, дату укладення договору та кількість днів, необхідних для виконання, а також загальну вартість усіх послуг.

Саме АРМ визначають складність і вартість ремонту, призначають терміни здачі.

Кожен вид ремонту включає в себе перелік необхідних робіт, що належать саме до цього виду, а також список автозапчастин, необхідних для успішного виконання завдання. Ремонт може складатися з однієї або декількох робіт. Наприклад:

  • Ремонт двигуна: заміна блоку циліндра, регулювання, шліфування; шайба,конус,шпиндель;

  • Заміна заднього моста: регулювання,заміна картера; картер;

  • Заміна переднього моста: заміна балки передньої осі,заміна поперечени незалежної підвіски; балка передньої осі,поперечина;

  • Ремонт коробки передач: ремонт картера,установка картера; картер;

  • Рихтовка: заміна картера, регулювання картера; картер;

  • Заміна рульового механізму: шліфування, вирівнювання, пофарбування; мастика, фарба

Також кожен ремонт містить категорію, що описує рівень складності ремонту, а також його вартість. Наприклад:

  • Ремонт двигуна, 1 категорія, 800 грн;

  • Заміна заднього моста, 2 категорія, 500 грн;

  • Заміна переднього моста, 2 категорія, 200 грн;

  • Ремонт коробки передач, 3 категорія, 150 грн;

  • Рихтовка, 3 категорія, 100 грн;

  • Ремонт рульового механізму, 2 категорія, 150 грн
  1. Модель бази даних

    1. Концептуальна модель бази даних


Концептуальна модель бази даних представляє опис основних таблиць і зв’язків між ними.

Концептуальна модель є відображенням предметної області, для якої розробляється база даних.[Error: Reference source not found]

(Рисунок 2 .1- Концептуальна модель системи) представляє собою концептуальну модель розробленої бази даних разом з атрибутами сутностей.



Рисунок 2.1- Концептуальна модель системи
    1. Фізична модель бази даних


Фізична модель даних описує реалізацію об'єктів логічної моделі на рівні об'єктів конкретної бази даних.[Error: Reference source not found]



Рисунок 2.2 - Фізична модель БД
    1. Опис бази даних


У базі даних було створено 11 таблиць. Кожна таблиця містить свій набір даних. Деякі з таблиць створені для зв’язування інших таблиць.

Таблиця agreements містить основну інформацію про договір і є основною таблицею системи. Вона зв’язана з таблицями cars, organization, repairshop відношеннями один до одного, оскільки в одному договорі може бути лише один автомобіль, одна організація та одна майстерня. Оскільки в одному договорі можлива різна кількість ремонтів, то таблиці agreements і repairtype_in_agreement також зв’язані. Отже вся інформація про ремонти, що входять в даний договір зберігається в таблиці repairtype_in_agreement.

Таблиця repairtype_in_agreement слугує для зв’язування договорів та включених в них ремонтів. Саме завдяки їй в одному договорі може бути різна кількість ремонтів. Ця таблиця зв’язана з таблицею repair_types, де збережена додаткова інформація про ремонт.

Таблиця repair_types зв’язана з двома таблицями:worktype_in_repairtype і autopart_in_repairtype. Аналогічно repairtype_in_agreement, вона дозволяє включати в даний ремонт різну кількість робіт та деталей.

Оскільки всі таблиці зв’язуються між собою по id, таблиця worktype_in_repairtype зв’язана з таблицею work_types, де міститься опис конкретної роботи. Аналогічно таблиця autoparts, зв’язана з таблицею autopart_in_repairtype по id, містить описову інформацію про автозапчастини.

Таблиці cars, organization, repairshop містять основну інформацію про автомобілі, організації та майстерні відповідно.

Таблиця users не зв'язана з іншими таблицями, оскільки вона використовується для авторизації користувача в програмі. В цій таблиці зберігаються логін та пароль користувача, а також займана посада, оскільки від неї залежить рівень доступу до даних.
    1. Приклади заповнення таблиць


Нижче продемонстровані приклади коду для вставки даних в таблиці repair_types і work_types, а також як вони виглядають в таблиці.

Таблиця repair_types

insert into repair_types(repair_type_name,category,cost,work_type_id, autopart_id) values ( "ремонт двигателя",1,500,11,1),

("ремонт двигателя",1,500,12,10),

("замена заднего моста",2,400,13,11),

("замена переднего моста",2,600,15,12),

("ремонт коробки передач",3,1200,13,13),

( "рихтовка",3,3000,13,14),

( "ремонт рулевого механизма",2,4500,17,15);



Рисунок 2.3 - Приклад заповнення таблиці «repair_types»
Таблиця repair_types

insert into work_types(work_type_name) values( "замена блока цилиндра"),("регулировка"),( "замена картера"),( "замена балки передней оси"), ( "замена поперечены независимой подвески"),( "ремонт картера"),( "регулировка картера"),( "шлифовка "), ( "выпрямление "),( "покраска ");



Рисунок 2.4 - Приклад заповнення таблиці «repair_types»
  1. Опис проекту та інтерфейсу користувача

    1. Використані програмні засоби


Програма написана мовою програмування C#, з використанням Windows Forms.

База даних була спроектована в СУБД MySQL Workbench 6.3 CE.

Середовище розробки для написання коду – Visual Studio Express 2013

Для запуску системи необхідно мати .NET Framework 4.6.
    1. Функціональна модель програмного забезпечення


На (Рисунок 3 .5 - Діаграма компонентів) зображено діаграму компонентів, що відображає основні файли проекту, де відбувається створення форм та взаємодія з базою даних завдяки їм.



Рисунок 3.5 - Діаграма компонентів

На (Рисунок 3 .6 - Діаграма прецедентів) зображено діаграму прецедентів, яка висвічує взаємодію користувачів зі системою. В програмі реалізовано два типи користувачів: Адміністратор і Касир.

Отже, як слідує з діаграми, у менеджера повинні бути права Адміністратора, оскільки саме він вносить дані в базу.

Користувачі на посадах Касир та Робочий повинні мати тип доступу Касир, оскільки їм немає необхідності вносити будь-які зміни в базу даних.



Рисунок 3.6 - Діаграма прецедентів
    1. Структура програмного коду системи


Основним класом системи є клас General, що зв’язує з собою всі інші класи. Проте система починає свою роботу не з цього класу.

При запуску програми перш за все створюється екземпляр класу Login, який проводить авторизацію користувача. Якщо авторизація успішна, то створюється екземпляр класу General, інакше - видається вікно про невірно введені дані.

При загрузці форми класу General відбувається підключення до бази даних. Потім, при кожному виклику метода відбувається відкриття коректу та бази, та після виконаних операцій його закриття. Також тут викликаються методи, що підгружають дані в таблиці форми для того, щоб користувач зразу ж побачив інформацію, що знаходиться в системі.

Більшість методів цього класу відповідають за реалізацію операцій при натисканні на певну кнопку форми. В основному, в даній програмі існує 4 типи методів для 4 типів кнопок: Додати, Редагувати, Видалити, Переглянути дані та Експорт в Excel. Методи, що додають та редагують дані в базі, створюють екземпляри форм, що необхідні для даних операцій.

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

Кнопки, що відповідають за редагування та додавання елементів в певну таблицю, перед цим створюють окремий екземпляр класу Agreement, Car, Client та інших. Завдяки цим класам відбувається керування даними бази.

В основному, в програмі при створенні нового вікна блокується доступ до попереднього, поки не будуть виконані необхідні дії в даному. Це необхідно для коректної роботи з базою, інакше може виникнути ситуація, коли обидва користувачі одночасно додають дані в базу і ці дані мають одинаків ідентифікатор, що неприпустимо.

Проте, для деяких кнопок є виключення. Наприклад, користувач без проблем може переглядати види ремонтів в декількох договорах одночасно.

Для забезпечення зменшення кількості помилок при вводі даних, усі випадаючі поля підгружають свої дані з бази даних та не дозволяють ці дані змінювати.

В залежності від посади користувача, клас General представляє різні можливості. Наприклад, користувач має обмежені можливості, якщо займає посаду касира, оскільки в нього немає необхідності вносити зміни в базу. А от адміністратор має повний доступ до функціональності програмного продукту.
    1. Керівництво користувача


Оскільки програмний продукт було створення для полегшення роботи з паперами та забезпечення ефективної обробки даних, ключовими ідеями для програми є легкість використання та безпека. Саме тому першим вікном програми є вікно авторизації, де користувач вводить свій логін, пароль та посаду(Рисунок 3 .7 - Форма входу користувача). Для поля Пароль замість паролю показуються крапки для забезпечення його секретності. Поле Посада дозволяє вибрати посаду з доступних, а також забороняє редагування даного поля.



Рисунок 3.7 - Форма входу користувача

При вводі некоректних даних видається вікно про помилку(Рисунок 3 .8 - Вікно помилки при некоректно введених даних).



Рисунок 3.8 - Вікно помилки при некоректно введених даних

Після авторизації користувач отримує доступ до основного вікна програми(Рисунок 3 .9 - Основне вікно програми).



Рисунок 3.9 - Основне вікно програми

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

Наприклад, в вкладці користувач має змогу додати договір(Рисунок 3 .10 - Вікно додавання договору).



Рисунок 3.10 - Вікно додавання договору

Як видно з малюнка, для полегшення роботи з датами використовується об’єкт DateTimePicker, що дозволяє зручно оперувати датою. Також під усі поля підібрані спеціальні об’єкти, що зменшують можливість виникнення помилки.

Для редагування певного договору потрібно в таблиці натиснути на рядок, який потрібно редагувати та натиснути кнопку «Редагувати договір»(Рисунок 3 .11 - Вікно редагування договору)



Рисунок 3.11 - Вікно редагування договору

Для видалення договору з бази даних необхідно клікнути на вибраному рядку та натиснути кнопку «Видалити договір». Система відобразить попереджуюче вікно для випадку, якщо користувач випадково натиснув кнопку. В цьому вікні може підтвердити або відмінити видалення договору(Рисунок 3 .12 - Вікно видалення договору).



Рисунок 3.12 - Вікно видалення договору

Оскільки договір також містить в собі інформацію про ремонти, що необхідно виконати, доступною є кнопка «Переглянути види ремонтів в договорі». Якщо користувач хоче додати чи видалити вид ремонту з договору, він також повинен використати дану кнопку(Рисунок 3 .13 - Вікно перегляду ремонтів в договорі).



Рисунок 3.13 - Вікно перегляду ремонтів в договорі

Також кожна таблиця містить кнопку «Експорт в Excel». При збереженні таблиці користувач може вибрати розташування файлу в своїй системі(Рисунок 3 .14 - Вікно збереження договорів в Excel).



Рисунок 3.14 - Вікно збереження договорів в Excel

Після цього необхідно по заданому шляху найти файл та відкрити його(Рисунок 3 .15 - Вигляд договорів в Excel).



Рисунок 3.15 - Вигляд договорів в Excel

Аналогічною функціональністю забезпечені вкладки «Клієнт та машини», «Види послуг», «Автозапчастини» та «Майстерні».

Окремої уваги варта вкладка «Ремонти, роботи та автозапчастини». Саме тут можна без додаткових вікон побачити, які роботи повинні бути виконані та необхідні деталі для ремонту(Рисунок 3 .16 - Вкладка «Ремонти, роботи та автозапчастини»).



Рисунок 3.16 - Вкладка «Ремонти, роботи та автозапчастини»

Вкладка «Рахунки на оплату» виводить всі дані, що повинні бути в рахунках при оплаті.(Рисунок 3 .17 - Вкладка «Рахунки на оплату»)



Рисунок 3.17 - Вкладка «Рахунки на оплату»

Вкладка «План роботи на даний період» містить два елементи, в які користувач повинен ввести початок та кінець періоду. Після цього необхідно натиснути кнопку «Вивести дані». Якщо користувач ввів неправильні границі періоду, система видає повідомлення про помилку(Рисунок 3 .18 - Вікно помилки при вводі некоректних границь періоду).



Рисунок 3.18 - Вікно помилки при вводі некоректних границь періоду

Якщо дані коректні, то система відображає усі договори, що відповідають даному критерію пошуку(Рисунок 3 .19 - «План роботи на даний період» з коректно введеним періодом).



Рисунок 3.19 - «План роботи на даний період» з коректно введеним періодом

Важливий момент: програма виводить всі договори, у яких дата укладання та кінцевий термін виконання одночасно входять в даний період.

Для користувача Касир реалізований обмежений доступ до програми(Рисунок 3 .20 - Основне вікно програми для користувача на посаді Касира).



Рисунок 3.20 - Основне вікно програми для користувача на посаді Касира

Висновки

В ході курсового проекту була вивчена предметна область, спроектована база даних та реалізована інформаційна система «Авторемонтні майстерні». Дана система дає змогу керувати процесами, змінювати дані та експортувати їх в інші програми.

В процесі роботи були використані такі засоби як Visual Studio 2013 Express та MySQL Workbench 6.3 CE. Проект написаний мовою програмування C#.

Програма забезпечує взаємодію з базою даних, оскільки дозволяє швидко додавати, редагувати, а також видаляти дані та здійснювати над ними операції.

Під час виконання курсового проекту було проведено проектування та розробка баз даних, розроблені діаграми компонентів, прецедентів, концептуальної та фізичної моделей.

Список використаних джерел

  1. Базы даных Урок 4. Концептуальная модель базы даных [Електроннний ресурс] site-do.ru/db/db4.php

  2. Типы моделей даннях корпоративного хранилища данных [Електроннний ресурс] prj-exp.ru/dwh/dwh_model_types.php

  3. Освой самостоятельно SQL. 10 минут на урок, 3-е издание. : Пер. с англ. — М. : Издательский дом “Вильямс”, 2006. — 288 с.

  4. Рихтер Дж. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.5 на языке C#. 4-е изд. — СПб.: Питер, 2013. — 896 с.: ил. — (Серия «Мастер-класс»).

  5. Основи проектування та використання баз даних : Навч. посібник – 2-ге вид., виправл. і допов./ В. І. Гайдаржи, О. А. Дацюк – К.:ІВЦ “Видавництво “Політехніка”, ТОВ “Фірма “Періодика”, 2004. — 256 с.

Додаток





Лістинг програмного модуля
НТУУ «КПІ» ТЕФ АПЕПС ТВ-42


Листів 5

Київ – 2016

Клас Login(реалізує вікно авторизації)

public partial class Login : Form

{

MySqlConnection conn;

MySqlDataAdapter dataAdapter;
public Login()

{

InitializeComponent();

string serverName = "localhost"; // Адрес сервера

string userName = "root"; // Имя пользователя

string dbName = "repair_shops"; //Имя базы данных

string port = "3306"; // Порт для подключения

string password = "root"; // Пароль для подключения

string connStr = "server=" + serverName +

";user=" + userName +

";database=" + dbName +

";port=" + port +

";password=" + password + ";";

conn = new MySqlConnection(connStr);

if (OpenConnection() == true)

{

string sql = @"select * from users;"; // Строка запроса

dataAdapter = new MySqlDataAdapter(sql, conn);

DataSet users = new DataSet();

dataAdapter.Fill(users);

comboBox1.DataSource = users.Tables[0];

comboBox1.DisplayMember = "user_position";

comboBox1.ValueMember = "user_position";

CloseConnection();//close connection

}

}

public string getPosition(){return comboBox1.SelectedValue.ToString();}

private void button1_Click(object sender, EventArgs e)

{

if (OpenConnection() == true)

{

string sql = @"select * from users where user_name = '"+textBox1.Text+"' and user_password ='"+textBox2.Text+"' and user_position = '"+comboBox1.SelectedValue+"';";

dataAdapter = new MySqlDataAdapter(sql, conn);

DataSet user = new DataSet();

dataAdapter.Fill(user);

if (user.Tables[0].Rows.Count != 0)

{

General gen = new General();

gen.Owner = this;

gen.Show();

this.Visible = false;

}

else

MessageBox.Show("Невірні дані для входу","Помилка");

CloseConnection();//close connection

}

}

//open connection to database

public bool OpenConnection(){…}

//Close connection

public bool CloseConnection(){}

}

Клас General(Реалізує основне вікно програми)
public partial class General : Form

{

MySqlConnection conn;

MySqlDataAdapter dataAdapter;
DataSet agreementsInfo = new DataSet();

DataSet organizationsInfo = new DataSet();

DataSet shopsInfo = new DataSet();

DataSet carsInfo = new DataSet();

DataSet repairtypesInfo = new DataSet();

DataSet worktypesInfo = new DataSet();

DataSet autopartsInfo = new DataSet();
public DataGridView getAgreement(){ return agreements; }//…тут зберігаються дані в таблицях форми

public DataSet getOrganizationInfo(){return organizationsInfo;} тут зберігаються дані, які з бази даних вносяться в форми
private void onLoadMainForm(object sender, EventArgs e)//базові функції, що виконуються при створенні форми

{

string serverName = "localhost";

string userName = "root"; // Имя пользователя

string dbName = "repair_shops"; //Имя базы данных

string port = "3306"; // Порт для подключения

string password = "root"; // Пароль для подключения

string connStr = "server=" + serverName +

";user=" + userName +

";database=" + dbName +

";port=" + port +

";password=" + password + ";";

conn = new MySqlConnection(connStr);
loadAgreements();//загрузка даних в таблиці

loadClients();

loadCars();

loadRepairsPlus();

loadRepairTypes();

loadWorkTypes();

loadShops();

loadAutoparts();

checks();

if (((Login)this.Owner).getPosition() == "cashier")//заборонити доступ до деяких кнопок, якщо користувач - Касир

{

button1.Enabled = false;

button2.Enabled = false;



}

}
public void loadAgreements()//приклад загрузки даних в таблицю agreements

{

if (OpenConnection() == true)

{

string sql = "select A.agreement_id as 'Номер договору',O.organization_name as 'Клієнт',R.repairshop_name as 'Майстерня', C.car_info as 'Автомобіль', A.start_date as 'Дата договору', A.deadline as 'Термін виконання', A.general_cost as 'Повна вартість' from agreements A, cars C, organization O, repairshop R where C.car_id = A.car_id and O.organization_id = A.organization_id and R.repairshop_id = A.repairshop_id ;"; // Строка запроса

dataAdapter = new MySqlDataAdapter(sql, conn);

agreementsInfo = new DataSet();

dataAdapter.Fill(agreementsInfo);

agreements.DataSource = agreementsInfo.Tables[0];

//close connection

CloseConnection();

}

}
//open connection to database

public bool OpenConnection()

{

try

{

conn.Open();

return true;

}

catch (MySqlException ex)

{

switch (ex.Number)

{

case 0:

MessageBox.Show("Cannot connect to server. Contact administrator");

break;

case 1045:

MessageBox.Show("Invalid username/password, please try again");

break;

default:

MessageBox.Show(ex.Message);

break;

}

return false;

}

}

//Close connection

public bool CloseConnection()

{

try

{

conn.Close();

return true;

}

catch (MySqlException ex)

{

MessageBox.Show(ex.Message);

return false;

}

}
private void button1_Click_1(object sender, EventArgs e)//Кнопка «Додати новий договір»

{

Agreement addAgr = new Agreement();

addAgr.Owner = this;

addAgr.addAgreement();

addAgr.getBut().Click += new EventHandler(addAgr.submitAddAgreement);

addAgr.Text = "Додати новий договір";

this.Enabled = false;

addAgr.Show();

}


//план роботи

private void button25_Click(object sender, EventArgs e)

{

if(dateTimePicker1.Value>=dateTimePicker2.Value)

MessageBox.Show("Початкова дата більша за кінцеву!", "Помилка");

else

{

if (OpenConnection() == true)

{

dataGridView1.DataSource = null;

string sql = @"select A.agreement_id as 'Номер договору', O.organization_name as 'Клієнт',R.repairshop_name as 'Майстерня',C.car_info

as 'Автомобіль',A.start_date as 'Дата договору',deadline as 'Термін виконання',GROUP_CONCAT(repair_type_name SEPARATOR ',') as 'Види ремонтів'

from agreements A

join organization as O on O.organization_id = A.organization_id

join cars as C on C.car_id = A.car_id

join repairshop as R on R.repairshop_id = A.repairshop_id

join repairtype_in_agreement as RIA on RIA.agreement_id = A.agreement_id

join repair_types as RT on RT.repair_type_id = RIA.repair_type_id

where A.start_date>='"+dateTimePicker1.Text+"' and DATE_ADD(A.start_date,INTERVAL A.deadline day) <'"+dateTimePicker2.Text+

"'GROUP BY A.agreement_id, O.organization_name,R.repairshop_name,C.car_info,A.start_date,deadline;"; // Строка запроса

dataAdapter = new MySqlDataAdapter(sql, conn);

DataSet planInfo = new DataSet();

dataAdapter.Fill(planInfo);

dataGridView1.DataSource = planInfo.Tables[0];
CloseConnection();

}

}

}
//рахунки на оплату

public void checks()

{

if (OpenConnection() == true)

{

dataGridView2.DataSource = null;

string sql = @"select A.agreement_id as 'Номер договору', O.organization_name as 'Клієнт',O.fullname as 'Представник',R.repairshop_name as 'Майстерня',C.car_info

as 'Автомобіль',A.start_date as 'Дата договору',deadline as 'Термін виконання',GROUP_CONCAT(repair_type_name SEPARATOR ', ') as 'Види ремонтів', A.general_cost as 'Повна вартість'

from agreements A

join organization as O on O.organization_id = A.organization_id

join cars as C on C.car_id = A.car_id

join repairshop as R on R.repairshop_id = A.repairshop_id

join repairtype_in_agreement as RIA on RIA.agreement_id = A.agreement_id

join repair_types as RT on RT.repair_type_id = RIA.repair_type_id

where A.general_cost > 0

GROUP BY A.agreement_id, O.organization_name,R.repairshop_name,C.car_info,A.start_date,deadline;"; // Строка запроса

dataAdapter = new MySqlDataAdapter(sql, conn);

DataSet checkInfo = new DataSet();

dataAdapter.Fill(checkInfo);

dataGridView2.DataSource = checkInfo.Tables[0];

//close connection

CloseConnection();

}

}

private void ToCsV(DataGridView dGV, string filename)// експорт в Excel

{

string stOutput = "";

// Export titles:

string sHeaders = "";
for (int j = 0; j < dGV.Columns.Count; j++)

sHeaders = sHeaders.ToString() + Convert.ToString(dGV.Columns[j].HeaderText) + "\t";

stOutput += sHeaders + "\r\n";

// Export data.

for (int i = 0; i < dGV.RowCount; i++)

{

string stLine = "";

for (int j = 0; j < dGV.Rows[i].Cells.Count; j++)

{

DateTime temp;

if (DateTime.TryParse(dGV.Rows[i].Cells[j].Value.ToString(), out temp))

stLine = stLine.ToString() + DateTime.Parse(dGV.Rows[i].Cells[j].Value.ToString()).ToString("yyyy-MM-dd") + "\t";

else

stLine = stLine.ToString() + Convert.ToString(dGV.Rows[i].Cells[j].Value) + "\t";

}

stOutput += stLine + "\r\n";

}

Encoding utf16 = Encoding.GetEncoding(1251);

byte[] output = utf16.GetBytes(stOutput);

FileStream fs = new FileStream(filename, FileMode.Create);

BinaryWriter bw = new BinaryWriter(fs);

bw.Write(output, 0, output.Length); //write the encoded file

bw.Flush();

bw.Close();

fs.Close();

MessageBox.Show("Дану таблицю успішно експортовано в Microsoft Excel",

"Експорт успішний");

}

}





скачати

© Усі права захищені
написати до нас