Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Игра «История одной фермы» - увлекательное и бросающее вызов вашим серым клеточкам приключение, от которого невозможно оторваться!

История одной фермы - маджонг

Маджонг, Казуальные, Приключения

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
Jelizaveta
1 месяц назад

Как читать Excel в C#: Excel в DataTable и базу данных⁠⁠

Как читать Excel в C#: Excel в DataTable и базу данных Csharp, Dotnet, Microsoft Excel, Длиннопост

Работа с файлами Excel является распространенной задачей во многих приложениях на C#, будь то для анализа данных, отчетности или интеграции с базами данных. В этом блоге мы рассмотрим, как читать файлы Excel в C# с использованием бесплатной библиотеки Excel для .NET. Мы охватим:

  1. Чтение рабочего листа Excel в C#

  2. Импорт данных в DataTable

  3. Сохранение данных Excel в базу данных (MySQL)

Библиотека C# для чтения Excel

Для работы с файлами Excel в C# мы будем использовать Free Spire.XLS для .NET — мощную библиотеку, которая позволяет разработчикам создавать, читать, редактировать и конвертировать файлы Excel без зависимости от Microsoft Office.

Установка

Установите библиотеку через диспетчер пакетов NuGet:

Install-Package FreeSpire.XLS

Чтение рабочего листа Excel в C#

Чтобы прочитать рабочий лист Excel, вы можете использовать следующий фрагмент кода на C#. Этот пример демонстрирует, как загрузить файл Excel и пройтись по его строкам и столбцам.

Основные шаги

  1. Создайте объект Workbook: Инициализируйте рабочую книгу для работы.

  2. Загрузите файл Excel: Укажите путь к вашему файлу Excel.

  3. Получите доступ к рабочему листу: Получите первый рабочий лист из книги.

  4. Получите диапазон данных: Извлеките диапазон ячеек, содержащих данные.

  5. Переберите строки и столбцы: Выведите значение каждой ячейки.

using Spire.Xls;

namespace ReadExcelData

{

class Program

{

static void Main(string[] args)

{

// Создайте объект Workbook

Workbook wb = new Workbook();

// Загрузите существующий файл Excel

wb.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

// Получите первый рабочий лист

Worksheet sheet = wb.Worksheets[0];

// Получите диапазон ячеек, содержащих данные

CellRange locatedRange = sheet.AllocatedRange;

// Переберите строки

for (int i = 0; i < locatedRange.Rows.Length; i++)

{

// Переберите столбцы

for (int j = 0; j < locatedRange.Rows[i].ColumnCount; j++)

{

// Получите данные конкретной ячейки

string cellValue = locatedRange[i + 1, j + 1].Value?.ToString() ?? "N/A";

// Выравните вывод с шириной 22

Console.Write($"{cellValue,-22}");

}

Console.WriteLine();

}

}

}

}

Импорт данных из Excel в DataTable

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

Основные шаги

  1. Создайте форму: Используйте приложение Windows Forms.

  2. Загрузите файл Excel: Как и в предыдущем разделе, загрузите ваш файл Excel.

  3. Экспортируйте данные в DataTable: Используйте метод ExportDataTable для конвертации данных.

  4. Свяжите DataTable с DataGridView: Отобразите данные в элементе управления DataGridView.

using Spire.Xls;

using System.Data;

namespace ReadExcelIntoDataTable

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

// Создайте объект Workbook

Workbook wb = new Workbook();

// Загрузите существующий файл Excel

wb.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

// Получите первый рабочий лист

Worksheet sheet = wb.Worksheets[0];

// Экспортируйте данные из рабочего листа в DataTable

DataTable dataTable = sheet.ExportDataTable();

// Свяжите DataTable с DataGridView

dataGridView1.DataSource = dataTable;

// Освободите ресурсы

wb.Dispose();

}

}

}

Сохранение данных Excel в базу данных (MySQL)

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

Основные шаги

  1. Загрузите документ Excel: Как и в предыдущих шагах, загрузите ваш файл Excel.

  2. Извлеките заголовки: Получите строку заголовков для использования в качестве имен столбцов в вашей базе данных.

  3. Соберите данные: Извлеките каждую запись из строк данных.

  4. Подключитесь к MySQL: Установите соединение с базой данных MySQL.

  5. Создайте таблицу базы данных: Динамически создайте SQL для создания таблицы на основе заголовков.

  6. Вставьте данные: Используйте параметризованные запросы для вставки каждой записи в базу данных.

using Spire.Xls;

using MySql.Data.MySqlClient;

namespace ExcelToMySQL

{

class Program

{

static void Main(string[] args)

{

// Создайте объект Workbook

Workbook wb = new Workbook();

// Загрузите документ Excel

wb.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");

// Получите конкретный лист

Worksheet sheet = wb.Worksheets[0];

// Извлеките заголовки

List<string> headers = new List<string>();

for (int col = 1; col <= sheet.LastColumn; col++)

{

string header = sheet.Range[1, col].Value?.ToString();

// Удалите пробелы, чтобы избежать конфликтов с именами столбцов MySQL

string cleanHeader = header?.Replace(" ", "");

headers.Add($"`{cleanHeader}`");

}

// Извлеките данные

List<List<string>> data = new List<List<string>>();

for (int row = 2; row <= sheet.LastRow; row++)

{

List<string> record = new List<string>();

for (int col = 1; col <= sheet.LastColumn; col++)

{

record.Add(sheet.Range[row, col].Value?.ToString() ?? string.Empty);

}

data.Add(record);

}

// Установите соединение с базой данных MySQL

string connectionString = "server=localhost;user=root;password=admin;database=excel_db;";

using (MySqlConnection connection = new MySqlConnection(connectionString))

{

connection.Open();

// Создайте таблицу с динамическими столбцами на основе заголовков

List<string> columns = new List<string>();

foreach (string header in headers)

{

// Предполагая, что все значения заголовков являются VARCHAR для простоты; настройте типы по мере необходимости

columns.Add($"{header} VARCHAR(255)");

}

// Создайте таблицу в базе данных

string columnsSql = string.Join(", ", columns);

string createTableQuery = $@"

CREATE TABLE IF NOT EXISTS my_table (

id INT AUTO_INCREMENT PRIMARY KEY,

{columnsSql}

)";

// Выполните запрос на создание таблицы

using (MySqlCommand createCommand = new MySqlCommand(createTableQuery, connection))

{

createCommand.ExecuteNonQuery();

}

// Подготовьте SQL-запрос INSERT

string placeholders = string.Join(", ", new string[headers.Count].Select(h => "?"));

string insertQuery = $"INSERT INTO my_table ({string.Join(", ", headers.Select(h => h.Trim('`')))}) VALUES ({placeholders})";

// Вставьте данные в таблицу

foreach (List<string> record in data)

{

using (MySqlCommand insertCommand = new MySqlCommand(insertQuery, connection))

{

for (int i = 0; i < record.Count; i++)

{

insertCommand.Parameters.AddWithValue($"@Param{i}", record[i]);

}

insertCommand.ExecuteNonQuery();

}

}

}

Console.WriteLine("Данные успешно экспортированы!");

}

}

}

Заключение

В этой статье мы рассмотрели, как читать данные из файлов Excel с помощью C#, импортировать эти данные в DataTable и сохранять их в базу данных MySQL. Используя библиотеку Free Spire.XLS, разработчики могут эффективно обрабатывать файлы Excel без необходимости в Microsoft Office. Этот подход может значительно улучшить рабочие процессы обработки данных в приложениях на C#.

Показать полностью
Csharp Dotnet Microsoft Excel Длиннопост
4
15
carbofoserman
carbofoserman
1 месяц назад

Нужен программист с опытом⁠⁠

Нужен программист с опытом Программист, Работа, Опыт работы, Скриншот, Habr, Программирование, Dotnet, Московская биржа, Найм

Источник: https://habr.com/ru/articles/920084/#comment_28461946

Программист Работа Опыт работы Скриншот Habr Программирование Dotnet Московская биржа Найм
8
3
Jelizaveta
1 месяц назад

Как конвертировать Word в PNG и JPEG на C#⁠⁠

Как конвертировать Word в PNG и JPEG на C# Csharp, Dotnet, Png, JPEG, Длиннопост, Microsoft Word

Введение

Конвертация документов Word (DOC/DOCX) в изображения форматов PNG и JPEG полезна для обмена контентом без необходимости редактирования или для сохранения форматирования документа. В этой статье мы рассмотрим, как выполнить такую конвертацию в C# с использованием библиотеки для обработки документов Word в .NET.

C# библиотека для конвертации Word в изображения

Spire.Doc for .NET предоставляет эффективные методы для преобразования документов Word в изображения. Библиотека поддерживает конвертацию целых документов или отдельных страниц в высококачественные изображения форматов PNG, JPEG и BMP. Она проста в интеграции и предлагает гибкий контроль над разрешением для лучшего качества вывода.

Установка Spire.Doc через NuGet

Для использования Spire.Doc в вашем проекте необходимо установить его через NuGet Package Manager:

  1. Откройте Visual Studio и ваш проект

  2. Перейдите в Tools → NuGet Package Manager → Manage NuGet Packages for Solution

  3. Найдите "Spire.Doc" во вкладке Browse

  4. Выберите пакет и нажмите Install

Альтернативно, вы можете установить его через Package Manager Console, используя команду:

Install-Package Spire.Doc

Эта библиотека предоставляет бесплатную версию с ограниченным функционалом, которую также можно установить через NuGet:

Install-Package FreeSpire.Doc

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

Конвертация DOC/DOCX в PNG

Следующий фрагмент кода демонстрирует, как преобразовать документ Word в изображения PNG:

using Spire.Doc;

using System;

using System.Drawing;

using System.Drawing.Imaging;

using Spire.Doc.Documents;

namespace ConvertWordToPng

{

class Program

{

static void Main(string[] args)

{

// Создаем объект Document

Document doc = new Document();

// Загружаем документ Word

doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.docx");

// Конвертируем весь документ в отдельные изображения

Image[] images = doc.SaveToImages(ImageType.Metafile);

// Проходим по коллекции изображений

for (int i = 0; i < images.Length; i++)

{

// Устанавливаем разрешение для конкретного изображения

Image newimage = ResetResolution(images[i] as Metafile, 150);

// Сохраняем изображение в формате PNG

string outputfile = String.Format("Image-{0}.png", i);

newimage.Save("C:\\Users\\Administrator\\Desktop\\Images\\" + outputfile, ImageFormat.Png);

}

}

// Метод для установки разрешения изображения

public static Image ResetResolution(Metafile mf, float resolution)

{

int width = (int)(mf.Width * resolution / mf.HorizontalResolution);

int height = (int)(mf.Height * resolution / mf.VerticalResolution);

Bitmap bmp = new Bitmap(width, height);

bmp.SetResolution(resolution, resolution);

using (Graphics g = Graphics.FromImage(bmp))

{

g.DrawImage(mf, Point.Empty);

}

return bmp;

}

}

}

Пояснение:

  1. Загрузка документа: Класс Document загружает файл Word по указанному пути

  2. Конвертация в изображения: Метод SaveToImages() преобразует каждую страницу в изображение Metafile

  3. Настройка разрешения: Метод ResetResolution() обеспечивает высокое DPI (150 в данном случае)

  4. Сохранение в PNG: Каждое изображение сохраняется в формате PNG с последовательным именем файла

Конвертация DOC/DOCX в JPEG

Следующий фрагмент кода преобразует документ Word в изображения JPEG:

using Spire.Doc;

using Spire.Doc.Documents;

using System;

using System.Drawing;

using System.Drawing.Imaging;

namespace ConvertWordToJPG

{

class Program

{

static void Main(string[] args)

{

// Создаем объект Document

Document doc = new Document();

// Загружаем документ Word

doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\input.docx");

// Конвертируем весь документ в отдельные изображения

Image[] images = doc.SaveToImages(ImageType.Bitmap);

// Проходим по коллекции изображений

for (int i = 0; i < images.Length; i++)

{

// Сохраняем изображение в формате JPEG

string outputfile = String.Format("Image-{0}.jpg", i);

images[i].Save("C:\\Users\\Administrator\\Desktop\\Images\\" + outputfile, ImageFormat.Jpeg);

}

}

}

}

Пояснение:

  1. Загрузка документа: Класс Document загружает файл Word аналогично конвертации в PNG

  2. Конвертация в Bitmap: Метод SaveToImages() преобразует страницы в изображения Bitmap

  3. Сохранение в JPEG: Каждое изображение сохраняется в формате JPEG с последовательным именем файла

Заключение

Используя Spire.Doc for .NET, конвертация документов Word в PNG или JPEG становится простой задачей. Библиотека эффективно обрабатывает рендеринг документов и предоставляет гибкость в настройке разрешения и формата изображений. Независимо от того, нужны ли вам высококачественные PNG или сжатые JPEG, Spire.Doc упрощает процесс конвертации на C#.

Показать полностью
Csharp Dotnet Png JPEG Длиннопост Microsoft Word
1
4
LionDan
LionDan
1 месяц назад
СМИ1.РФ
Серия Первая полоса

Полезное приложение от промпта до Github. Менее чем за час!⁠⁠

Полезное приложение от промпта до Github. Менее чем за час! Нейронные сети, Искусственный интеллект, Программирование, Программист, Csharp, Dotnet, DeepSeek

GUI программы

Это произошло, когда в Windows очередной раз системная смотрелка не захотела показывать мне фото в папке, сославшись якобы на нехватку памяти (в свою очередь желание посмотреть фото было связано с чисткой смартфона для обновления приложений в нём, но это уже другая история).

Да, терпение лопнуло! То работает, то нет.
Искать альтернативную смотрелку я не захотел, решил создать быстро самостоятельно.

Захожу в DeepSeek и прошу:

>> Код на C# приложения WinForms, которое
>> 1. Позволяет просматривать файлы изображений webp, jpeg, png, Gif, animated Gif, apng, bmp.
>> 2. Имеет справа и слева от области просмотра кнопки для листания соседних по папке картинок
>> 3. Запоминает настройки в JSON-файле и загружает их оттуда при следующем старте
>> 4. Помнит список последних папок
>> 5. Принимает имя файла через первый аргумент (Open Verb)

Результат вы можете видеть в GitHub. Вместе с этим постом от идеи до реализации прошло около часа. Код от нейросети с самого начала оказался работоспособен.
Вручную:
- создание пустого проекта WinForms в VS2022 Community
- копирование кода в нужное место из ответа DeepSeek и установка nuget-пакетов
- добавление иконки :)
- сборка, тестирование, публикация в папку
- создание репо на GitHub и отправка туда исходников и собранного релиза.

Дольше всего: написание этого поста :)

Показать полностью 1
[моё] Нейронные сети Искусственный интеллект Программирование Программист Csharp Dotnet DeepSeek
2
5
Вопрос из ленты «Эксперты»
user10830363
1 месяц назад
Спроси Пикабу

Посоветуйте качественные курсы C# и .NET⁠⁠

Я хотела бы начать двигаться в направлении C#-разработки. Но курсов очень много, отзывы не очень.

Пересмотрела кучу платформ, остановилась на: SkillFactory, OTUS, ITVDN, Специалист — рейтинг хороший, но отзывы вызывают сомнение. Кто сталкивался с ними? Поделитесь мнением о них.

Если знаете другие топовые курсы — пишите названия, буду благодарна!

Также вопрос к бывшим менеджерам по продажам курсов (или тем, кто в теме): Как можно выбить максимальную скидку? Слышала что нужно отказать в цене 2-3 раза, правда ли это? Может знаете реальные рабочие лайфхаки?

Буду рада помощи! Заранее спасибо за ответ.

Программирование Программист IT Онлайн-курсы Курсы программирования Курсы Менеджер по продажам Лайфхак Скидки Обучение Дистанционное обучение Учебные курсы Csharp Dotnet Вопрос Спроси Пикабу Текст
13
2
raynemar
5 месяцев назад

Visual Studio Code Extensions⁠⁠

Привет всем.
Есть ли среди вас те, кто пишут на VS Code .Net приложения?
Поделитесь, пожалуйста, какие расширения вы используете и какие считаете наиболее полезными.

[моё] IT Dotnet Visual studio Code Текст
3
cbagpipe
cbagpipe
7 месяцев назад
Лига программистов
Серия Прога мониторинга игровых ковров Artisan

Обновление проги мониторинга ковров Artisan. Практически 2.0⁠⁠

Продолжаю программировать)

Ссылка на первую часть: https://zalipaka.icu/story/monitoring_dostupnosti_geymerskikh_kovrikov_artisan_11613910

Переписал своего бота мониторинга ковров практически с нуля.

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

Новые функции:

- Команды телеграм-бота. То есть они в принципе появились и ими можно пользоваться.

- Команда /get. Основное нововведение. Если вам не нужно постоянно получать уведомления о том какие ковры появились, а какие закончились, можно отписаться от уведомлений через /stop, но при этом по команде /get получать все доступные на данный момент ковры или только интересные вам.

То есть "/get 99" вернёт только ковры у которых в коде продукта есть 99, а "/get 99 xxl" - только те у которых в коде есть и 99 и xxl.

Обновление проги мониторинга ковров Artisan. Практически 2.0 Linux, Программа, Приложение, Microsoft, Программирование, Csharp, Dotnet

Кстати, сегодня вышел новый ковёр (キ83) . На сайте появился, а больше нигде никаких анонсов пока нет.

- Индивидуальные фильтры уведомлений. Если лично вам не нужны уведомления о том, что в продаже появились классические ковры размера S - это можно организовать. Пока фильтр настраивается только с моей стороны.

Обновление проги мониторинга ковров Artisan. Практически 2.0 Linux, Программа, Приложение, Microsoft, Программирование, Csharp, Dotnet

из переписки с пользователем бота

Немного технической информации для любителей программирования:

- Это всё ещё приложение на NET8.
- Пишу и собираю всё в линуксе в VS Code.
- Для основы сервиса использовал шаблон Worker, но так как кода не особо много и он не сложный, дополнительно на микросервисы внутри ихней HostedService инфраструктуры не стал дробить. Просто в пределах одного воркера на функциональные классы поделил и всё.
- Конфиги и данные храню в JSON. Сериализую периодически в файл встроенным сериализатором (System.Text.Json.JsonSerializer)

Прочая обвязка

- Для телеграм-бота использую `Telegram.Bot`
- Для логгирования `log4net`
- Для прикручивания к линуксовому диспетчеру служб Systemd - `Microsoft.Extensions.Hosting.Systemd`
- Для отображения таблички у себя на сайте использую `DataTables` (офигенная штука). И снова планировщик cron, который с бэкенда во фронтенд копирует периодически файлик с данными.
- Для персональных фильтров изпользовал `Dynamic.Linq` - тоже классная вещь, не надо самому мутить свой контракт и парсер для него.

Вроде всё... Программа простая, но так приятно смотреть как оно всё само работает)

Показать полностью 2
[моё] Linux Программа Приложение Microsoft Программирование Csharp Dotnet
0
Партнёрский материал Реклама
specials
specials

Камень-ножницы-бумага! Раз-два-три!⁠⁠

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

Игры Удача Пицца
cbagpipe
cbagpipe
1 год назад
Серия Прога мониторинга игровых ковров Artisan

Мониторинг доступности геймерских ковриков Artisan⁠⁠

Может кому пригодится.

По просьбе одного хорошего человека написал программу и сделал удобную табличку с информацией о японских геймерских ковриках для мыши от компании Artisan.

Информация тянется с официального японского сайта (https://www.artisan-jp.com/) каждые полчаса. Есть возможность слать уведомления в телеграм.

https://cbagpipe.ru/artisan/

Табличка выглядит так:

Мониторинг доступности геймерских ковриков Artisan Программирование, Csharp, Dotnet, Геймеры, Коврик, Компьютер, Киберспорт, Товары, Япония

Уведомления — так:

Мониторинг доступности геймерских ковриков Artisan Программирование, Csharp, Dotnet, Геймеры, Коврик, Компьютер, Киберспорт, Товары, Япония

UPD:

Писал полностью в Linux. В качестве IDE использовал VS Code. Фреймворк — Net8.

Если интересны подробности, пишите в комментах - добавлю немного кода.

Затем закинул программу себе на сервер и добавил её периодическое выполнение в cron.

Из недостатков — для отправки уведомлений в Telegram использовал самый популярный пакет — Telegram.Bot. Так вот, в текущей версии этот пакет не поддерживает тримминг. Соответственно, собранное приложение вместо ~18МБ весит почти 100!

На сервере места достаточно, так что это не проблема. Но… 100МБ на очень скромное по функциям приложение! У моего внутреннего программиста-перфекциониска глаз дёргается от этого.

Показать полностью 2
[моё] Программирование Csharp Dotnet Геймеры Коврик Компьютер Киберспорт Товары Япония
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии