Сохранение использования электронной таблицы Excel Interop C#

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 ().

Какие-либо мысли?

6
задан Wesley 22 April 2010 в 17:37
поделиться

1 ответ

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

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

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

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

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

- Майк

5
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: