@Leocoan

Чтение и редактирование Excel с помощью C#?

public void writeFile()
        {   
            if(openFileDialog2.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }
            string excelFileName = openFileDialog2.FileName;
            ExcelSystem excelSystem = new ExcelSystem(excelFileName, 1);
            ExcelWriter excelWriter = new ExcelWriter(excelFileName, 1);
            excelWriter.writeToCell(1, 1, "HF");
            excelSystem.save();
            excelSystem.close();
            excelSystem.quit();
            MessageBox.Show("Done");
        }


Пытаюсь здесь записать в ячейку значение. Файл открывается, но данные в него не заносятся. В чём может быть проблема?

Вот классые, которые здесь используются:

class ExcelWriter : SystemInformation , IExcelWriter
    {
        public ExcelWriter(string path, int Sheet)
        {
            this.path = path;
            wb = ecxel.Workbooks.Open(path, 0, true);
            ws = wb.Worksheets[Sheet];
        }

        public void writeToCell(int rows, int columns, string content)
        {
            rows++;
            columns++;
            ws.Cells[rows, columns].Value2 = content;
        }
    }


class ExcelSystem : SystemInformation, IExcelSystem
    {
        public ExcelSystem(string path, int Sheet)
        {
            this.path = path;
            wb = ecxel.Workbooks.Open(path, 0, true);
            ws = wb.Worksheets[Sheet];
        }

        public void save()
        {
            wb.Save();
        }

        public void saveAs(string path)
        {
            wb.SaveAs();
        }

        public void close()
        {
            wb.Close();
        }

        public void quit()
        {
            ecxel.Quit();
        }
    }


abstract class SystemInformation
    {
        protected string path = "";
        protected _Application ecxel = new _Ecxel.Application();
        protected Workbook wb;
        protected Worksheet ws;
    }


Буду рад любой помощи.
  • Вопрос задан
  • 203 просмотра
Решения вопроса 2
GavriKos
@GavriKos
Если я правильно вижу - ExcelWriter и ExcelSystem никак не связаны. Изменения вы делаете в Writer, а сохраняете в System. Вообще такое разделение непонятно от слова совсем - зачем два несвязанных класса то?
Ответ написан
Согласен с товарищем выше — вы пишите в один объект, а сохраняете — другой.
Перенесите метод writeToCell внутрь класса ExcelSystem, а класс ExcelWriter — удалите, непонятно зачем он. Так же полезно будет реализовать в этом класса ExcelSystem интерфейс IDisposable, чтоб вместо вызова трех методов save, close и quit можно было использовать директиву using.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы