.NET 4.x Сохранение в xlsx и ошибка отсутствия доступа к файлу - C#

Узнай цену своей работы

Формулировка задачи:

Мне некоторые данные нужно сохранить в xlsx файл У меня есть класс table, у него следующие поля
        private Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
        private  Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
        private Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
затем в конструкторе
//Книга.
            ObjWorkBook = ObjExcel.Workbooks.Add(System.Reflection.Missing.Value);
            //Таблица.
            ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
            
            string[] buf = { "номер", "X", "X'", "Y", "Y'", "E", "Q", "M", "X(0)", "X(0)'", "Y(0)", "Y(0)'" };
            for(int i = 0; i<12; i++)
               ObjWorkSheet.Cells[2, i+1] = buf[i];
Так теперь мне нужно сохранить эту xlsx сделал метод
        public void Save()
        {
            ObjWorkBook.SaveAs(_path);
        }
Теперь самое интересное После нескольких записей (у меня отдельный метод) нужно сохранять, соответственно вызываю Save(), но вылетает ошибка (нет доступа к <имя файла>). Если запустить этот метод из конструктора, то все сохраняет, НО после того как все сохранилось процесс (файл открыт [и я не могу ни удалить не записать в него, приходится вручную убивать]) остается висеть. Что можете посоветовать?

Решение задачи: «.NET 4.x Сохранение в xlsx и ошибка отсутствия доступа к файлу»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
 
 
   
namespace Excel_Tabl
{
     
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
 
        {
             Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
          Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
         Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
            ObjWorkBook = ObjExcel.Workbooks.Add(System.Reflection.Missing.Value);
            //Таблица.
            ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
 
            string[] buf = { "номер", "X", "X'", "Y", "Y'", "E", "Q", "M", "X(0)", "X(0)'", "Y(0)", "Y(0)'" };
            for (int i = 0; i < 12; i++)
                ObjWorkSheet.Cells[2, i + 1] = buf[i];
        }
    }
}

ИИ поможет Вам:


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

Оцени полезность:

15   голосов , оценка 4.267 из 5
Похожие ответы