@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;
    }


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

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

Войти через TM ID
Похожие вопросы
от 40 000 до 70 000 руб.
Fmedia Санкт-Петербург
от 120 000 до 150 000 руб.
SLC7 Екатеринбург
от 50 000 до 90 000 руб.