Andrei B
Posts: 89
Joined: 2009-09-30
|
Hi,
We need to create a custom document format that would be loaded into word. The file is basically a ZIP archive with 2 files: First is the actual text data file (could be .txt file or .doc or .docx file) and the second is a plain text file that has meta-data info in it.
Using Add-In-Express, how would I go about recognizing this format in Word when it opens a file, and extracting the files somewhere and then have Word open the content file?
Then when saving we would have to archive the file back into the custom file format.
How is this done? Where do I start? Thanks!! |
|
Eugene Astafiev
Guest
|
Hi Andrei,
Using Add-In-Express, how would I go about recognizing this format in Word when it opens a file, and extracting the files somewhere and then have Word open the content file?
Unfortunately Word doesn't allow to extend a number of file extensions which it uses. |
|
Andrei B
Posts: 89
Joined: 2009-09-30
|
Are you sure this isn't possible?
Because if open a .Zip file in Word it still calls the OnDocumentLoad event handler, so there must be a way to override the default behavior and handle the custom file format. |
|
Andrei Smolin
Add-in Express team
Posts: 18794
Joined: 2006-05-11
|
Andrei,
This isn't possible. Absolutely.
Andrei Smolin
Add-in Express Team Leader |
|
Eugene Astafiev
Guest
|
Hello Andrei,
Sorry, I was wrong. I have created a sample add-in for testing purposes. Here I pasted a small piece of code illustrating the task:
Microsoft.Office.Core.FileDialog fd = WordApp.get_FileDialog(Microsoft.Office.Core.MsoFileDialogType.msoFileDialogOpen);
Microsoft.Office.Core.FileDialogFilters filters = fd.Filters;
filters.Add("Eugene Astafiev", "*.zip", 1);
if (fd.Show() == -1)
{
// here you can load the document into Word
System.Windows.Forms.MessageBox.Show(fd.SelectedItems.Item(1));
}
Please note that I used version specific PIAs.
Using Add-In-Express, how would I go about recognizing this format in Word when it opens a file, and extracting the files somewhere and then have Word open the content file?
You can use the System.IO.Compression namespace to unzip files from archive. http://blogs.msdn.com/dotnetinterop/archive/2006/04/05/.NET-System.IO.Compression-and-zip-files.aspx article will be useful. After you unzipped files from package you can open them in Word. |
|
Andrei B
Posts: 89
Joined: 2009-09-30
|
Actually, my developer Andrew decided that were not going to pursue a custom file format any more. Instead we'll go another way.
However I was able to hack a custom file format.
When Word opens a document, an OnOpenDocument event handler gets called. Into this handler, I added code that extracted the file extension from the document name. If the file extension was for our own custom file format, I would close the document, unzip the files from the file that was just opened and closed, and then open the correct file that was from the unziped archive.
This worked but it was ugly because Word would show a bunch of garbage when it first opened the zip file, but then it would go away right away and the right document would get loaded.
Anyway, thanks for all the help! |
|