C # Word Interop AccessViolationException при сохранении - PullRequest
6 голосов
/ 04 апреля 2011

Я хочу написать программу, которая будет читать целую кучу файлов word 97 (.doc) и сохранять их как файлы .docx.Я ограничен .Net 2.0.

На данном этапе я просто хочу, чтобы он работал с моим кодом заглушки - тогда я напишу графический интерфейс и логику для открытия нескольких файлов в разных местах и ​​т. Д..

Вот что у меня есть:

using MSWord   = Microsoft.Office.Interop.Word;
using MSPPoint = Microsoft.Office.Interop.PowerPoint;

затем

OpenFileDialog ofd = new OpenFileDialog()
{
  CheckFileExists = true,
};

if (ofd.ShowDialog() != DialogResult.OK)
  return;

MSWord.Application app = new MSWord.Application();
MSWord.Document    doc = new MSWord.Document();

doc = app.Documents.Open(ofd.FileName);

try
{
  doc.SaveAs2(ofd.FileName + ".docx", MSWord.WdSaveFormat.wdFormatDocument);
}
catch (Exception ex)
{
  MessageBox.Show("Could not save because:\r\n" + ex.Message,
    ex.GetType().ToString());
}

doc.Close();
app.Quit();

return;

Насколько я могу судить, слово document открывается.Однако команда SaveAs2(), похоже, выдает AccessViolationException, а файл .docx не сохраняется.

Может кто-нибудь сообщить мне, что не так с приведенным выше кодом, почему он не сохраняется, и какисправить это?

Спасибо

1 Ответ

11 голосов
/ 04 апреля 2011

Вы застряли в аду DLL. Используйте SaveAs2 () только в том случае, если на компьютере установлен Office 2010. Любая предыдущая версия действительно будет бомбить AccessViolation, метод не реализован. Использование правильной версии PIA также может помочь избежать этой проблемы, используйте самую низкую версию, которую вы готовы поддерживать.

Используйте метод SaveAs ().

...