#asp.net #sql-server #asp.net-mvc #excel #model-view-controller
#asp.net #sql-сервер #asp.net-mvc #excel #модель-представление-контроллер
Вопрос:
У меня есть лист Excel с семью столбцами, и два из этих столбцов пусты. У меня есть родительская таблица в SQL Server с несколькими столбцами и полными данными.
Как я могу заполнить эти два пустых столбца, взяв данные из таблицы SQL Server в ASP.NET MVC? Заранее спасибо!
Ответ №1:
Рассматривали ли вы возможность использования библиотеки C #, такой как NPOI или EPPlus, для изменения вашей таблицы Excel?
Знакомы ли вы с Entity Framework и как использовать NuGet для его установки в вашем проекте? Вы захотите использовать EF вместе с LINQ для извлечения данных из вашей таблицы SQL. Все зависит от потока вашего приложения и того, что вы хотите запустить обновление таблицы Excel, но вы, вероятно, захотите иметь метод action внутри вашего контроллера, который реагирует на взаимодействие с пользователем, а затем обращается к данным БД и записывает их на лист. Или вы просто хотите выполнить однократное извлечение и загрузку данных с SQL Server в Excel? Это будет веб-приложение или просто базовое консольное приложение?
РЕДАКТИРОВАНИЕ (пример EPPlus):
Вот простой пример, который я только что собрал, который показывает, как изменить таблицу Excel с помощью EPPlus:
var file = new FileInfo("C:\Projects\ConsoleApplication1\test.xlsx");
if (file.Exists)
{
using (ExcelPackage ep = new ExcelPackage(file))
{
var workSheet = ep.Workbook.Worksheets[1];
workSheet.Cells[2, 4].Value = "test";
ep.Save();
}
}
В этом примере я открываю файл Excel с помощью FileInfo из System.Ввод-вывод и затем, предполагая, что файл существует, создайте новый объект ExcelPackage и передайте объект FileInfo в качестве параметра. Затем я получаю доступ к первому рабочему листу и получаю доступ к ячейке во 2-й строке, 4-м столбце и устанавливаю значение «test». Наконец, я сохраняю изменения. Как вы можете видеть, это очень просто в использовании. Если вам нужны дополнительные разъяснения или расширенный пример, дайте мне знать.
Просто не забудьте включить System.Ввод-вывод и OfficeOpenXML (после установки пакета EPPlus из NuGet):
using OfficeOpenXml;
using System.IO;
РЕДАКТИРОВАТЬ (руководство Entity Framework):
Предполагая, что вы не используете .NET Core, поскольку у вас уже есть существующая база данных, я рекомендую вам использовать более простой подход Database First в Entity Framework 6 для запроса и извлечения данных из вашей базы данных SQL Server. Следуйте приведенным здесь инструкциям, чтобы настроить модель данных сущности в вашем веб-приложении. После того, как вы создали файл EDMX и создали свой контроллер с вашим методом действия, вы готовы написать запрос LINQ для получения данных. Я не знаю подробностей вашей схемы БД или сколько данных вам понадобится для заполнения столбца или собирается ли пользователь вводить данные как часть запроса, поэтому немного сложно привести конкретный пример, но я могу показать вам общий пример, а затемнадеюсь, вы сможете запустить его оттуда. Вот быстрый и грязный пример, который сочетает в себе запрос к базе данных с записью данных в таблицу Excel. В этом примере я запрашиваю все синие автомобили в таблице Cars, а затем записываю марку и модель каждого автомобиля в результат, отображаемый в электронной таблице Excel (начиная с первой строки). Я увеличиваю количество строк по мере просмотра результирующего набора, и это предполагает, что марка находится в первом столбце, а модель — во 2-м столбце листа.
var file = new FileInfo("C:\Projects\ConsoleApplication1\test.xlsx");
if (file.Exists)
{
using (CarEntities dc = new CarEntities())
{
var carList = from c in dc.Cars
where c.Color == "Blue"
select c;
var rowCount = 1;
using (ExcelPackage ep = new ExcelPackage(file))
{
foreach (var car in carList)
{
var workSheet = ep.Workbook.Worksheets[1];
workSheet.Cells[rowCount, 1].Value = car.Make;
workSheet.Cells[rowCount, 2].Value = car.Model;
rowCount ;
}
ep.Save();
}
}
}
Комментарии:
1. 1. это будет веб-приложение 2. Мне нужно будет создать метод действия, затем нужно получить файл Excel из локального, а затем обновить его данными с SQL server.
2. @Sribin Я только что обновил свой ответ выше, включив конкретный пример того, как использовать EPPlus для изменения вашей электронной таблицы Excel. Надеюсь, это поможет. Если вам нужна помощь в настройке Entity Framework и запросе базы данных для получения данных, дайте мне знать.
3. не могли бы вы объяснить, например, вместо «test», как я могу указывать значения с SQL server, а также отметить, что мне нужно заполнить весь столбец.
4. не могли бы вы объяснить, например, вместо «test», как я могу указывать значения с SQL server, а также отметить, что мне нужно заполнить весь столбец.
5. @Sribin добавил дополнительные рекомендации для вас выше, чтобы показать вам, как запрашивать базу данных с помощью Entity Framework, а затем записывать данные в электронную таблицу. Надеюсь, это поможет.