Добрый день, Я пишу программу, но мне нужно получить путь к excel файлу, использовать его данные и сохранить в поле значение ячейки. На c sharp. VS

using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelTest1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Add();
        }

        Excel.Application application;
        Excel.Workbook workbook;
        Excel.Worksheet worksheet;
        private void Add() 
        { 
            application = new Excel.Application();
            application.Visible = true;
            workbook = application.Workbooks.Open("C:\\Users\\artem\\OneDrive\\Рабочий 
стол\\CSharmLesson\\Таблица для расчетов\\Таблица для расчетов_v1_17.01.2023.xlsx");
            //worksheet = (Excel.Worksheet)workbook.Worksheets[0];

        }
    private void button1_Click(object sender, EventArgs e)
    {
        string save = worksheet.Cells["E8"];
        textBox1.Text = save;
    }
}

}


Ответы (1 шт):

Автор решения: versetty777

Используй библиотеку EPPlus. Её нужно установить через NuGet и добавить ссылку на нее в проект. Вот пример кода для получения данных из ячейки: using OfficeOpenXml;

//...

var fileInfo = new FileInfo("C:\\path\\to\\file.xlsx");
using (var package = new ExcelPackage(fileInfo))
{
    var worksheet = package.Workbook.Worksheets[0];
    var cellValue = worksheet.Cells[8, 5].Value; // "E8"
    textBox1.Text = cellValue.ToString();
}

Пример кода для сохранения данных в ячейку:

using OfficeOpenXml;

//...

var fileInfo = new FileInfo("C:\\path\\to\\file.xlsx");
using (var package = new ExcelPackage(fileInfo))
{
    var worksheet = package.Workbook.Worksheets[0];
    worksheet.Cells[8, 5].Value = textBox1.Text;
    package.Save();
}

Либо используй встроенный класс Microsoft.Office.Interop.Excel, который входит в .NET Framework:

using Microsoft.Office.Interop.Excel;

//...

var excelApp = new Application();
Workbook workbook = excelApp.Workbooks.Open("C:\\path\\to\\file.xlsx");
Worksheet worksheet = workbook.Worksheets[1];
Range range = worksheet.Cells[8, 5];
textBox1.Text = range.Value.ToString();
workbook.Close();

далее

using Microsoft.Office.Interop.Excel;

//...

var excelApp = new Application();
Workbook workbook = excelApp.Workbooks.Open("C:\\path\\to\\file.xlsx");
Worksheet worksheet = workbook.Worksheets[1];
Range range = worksheet.Cells[8, 5];
range.Value = textBox1.Text;
workbook.Save();
workbook.Close();
→ Ссылка