Сохранение таблицы Excel с использованием Interop C # - PullRequest
6 голосов
/ 22 апреля 2010
static void Main()
{
  Application excelapp = new Application();
  Workbook book = excelapp.Workbooks.Open(@"C:\HWYFAB.xlsx",
    0, false, 5, "", "", false, XlPlatform.xlWindows , "",
    true, false, 0, true, false, false);

  Worksheet sheet = (Worksheet)book.Sheets[1];

  Range cell = (Range)sheet.Cells[3, 2];
  Console.WriteLine(cell.Text);
  cell.ClearContents();
  book.Close(true, "HWYFAB.xlsx", false);
  excelapp.Quit();
}

Эта программа работает и завершается, как и ожидалось.Он выводит правильное значение, которое находится в ячейке B3, на консоль.При закрытии он спрашивает, хочу ли я заменить существующий файл.Я нажимаю да.Когда я открываю электронную таблицу в Excel, значение остается в ячейке B3, несмотря на ячейку. ClearContents ().

Есть мысли?

1 Ответ

5 голосов
/ 23 апреля 2010

Ваш вызов cell.ClearContents() удалит формулы и значения констант из ячейки. Это должно абсолютно работать. Вы можете подтвердить это после вашего звонка на cell.ClearContents(), проверив, если cell.Value2 == null, который должен быть true.

Я считаю, что проблема с вашим кодом в вызове book.Close(true, "HWYFAB.xlsx", false). Проблема в том, что вы явно передаете имя своей рабочей книги, но вы уходите с пути. (Обратите внимание, что когда вы открываете книгу, вы указываете полный путь, включая каталог «C: \».) Оставляя полный путь к книге при сохранении, вы сохраняете в текущий каталог, который может быть Мои документы "или где-либо еще.

Если вы хотите сохранить рабочую книгу на месте, в ее первоначальном расположении, вам нужно ввести Type.Missing для параметра Filename. Например:

book.Close(true, Type.Missing, false);

Эта идея не проверена, но я вполне уверен, что это должно сработать для вас. Попробуйте ...

- Майк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...