我想在Word 2007中添加导出为新文件格式的选项。理想情况下,如果该选项可能是Word 2007“另存为”对话框中的另一种文件格式,用户可以在文件格式下拉列表中选择框。
虽然我有很多.NET经验,但我没有为MS Office做过多少开发。在高层次上,我应该看一下使用.NET将另一个另存为格式添加到Word 2007中吗?
答案 0 :(得分:3)
在Word 2007中,您基本上有两个选项可以添加自己的自定义文件导出过滤器:
从Office 2007 SP2开始,您可以包含基于OpenXML的导出过滤器,有关详细信息,请参阅Introducing the Open XML Format External File Converter for 2007 Microsoft Office System SP2。
对于所有Word版本(返回Word 97或更早版本),您可以使用基于RTF的导出过滤器实现为Win32 dll:How to Obtain the WinWord Converter SDK (GC1039)
答案 1 :(得分:2)
查看Microsoft.Office.Core.FileDialog
界面及其Filters
属性(类型为Microsoft.Office.Core.FileDialogFilters
),您可以在其中添加和删除过滤器。它们包含在Office.dll的Visual Studio Tools for Office 12中。
关于获取正确的FileDialog
对象,首先获取Microsoft.Office.Interop.Word.Application实例(通常通过创建新的ApplicationClass
或等效地使用VBA的CreateObject
并称之为application
。然后执行以下操作:
Microsoft.Office.Core.FileDialog dialog = application.get_FileDialog( Microsoft.Office.Core.MsoFileDialogType.msoFileDialogSaveAs );
dialog.Title = "Your Save As Title";
// Set any other properties
dialog.Filters.Add( /* You Filter Here */ );
// Show the dialog with your format filter
if( dialog.Show() != 0 && fileDialog.SelectedItems.Count > 0 )
{
// Either call application.SaveAs( ... ) or use your own saving code.
}
实际代码可以在COM加载项中,也可以在使用COM打开/与Word交互的外部程序中。对于替换内置的“另存为”对话框,您还需要在某处处理Microsoft.Office.Interop.Word.Application.DocumentBeforeSave
事件(VBA,使用此代码等)来拦截默认行为。
以下是“另存为”处理程序的示例:
private void application_DocumentBeforeSave( Microsoft.Office.Interop.Word.Document document, ref bool saveAsUI, ref bool cancel )
{
// Be sure we are only handling our document
if( document != myDocument )
return;
// Allow regular "Save" behavior, when not showing the "Save As" dialog
if( !saveAsUI )
return;
// Do not allow the default UI behavior; cancel the save and use our own method
saveAsUI = false;
cancel = true;
// Call our own "Save As" method on the document for custom UI
MySaveAsMethod( document );
}
答案 2 :(得分:0)
无法保存为自定义格式或通过对象模型更改SaveAs对话框。现在,这看起来是http://msdn.microsoft.com/en-us/library/aa338206.aspx
的唯一方式