Doc Reader

[Résolu]
Signaler
Messages postés
10
Date d'inscription
mardi 13 septembre 2005
Statut
Membre
Dernière intervention
22 avril 2009
-
Messages postés
10
Date d'inscription
mardi 13 septembre 2005
Statut
Membre
Dernière intervention
22 avril 2009
-
Salut,


Comment je peux construire
une application qui visualise les fichiers .doc avec C#.


C’est urgent !

6 réponses

Messages postés
10
Date d'inscription
mardi 13 septembre 2005
Statut
Membre
Dernière intervention
22 avril 2009

Je trouve que la meilleure solution et d’utiliser le control
ActiveX DsoFramer (http://support.microsoft.com/kb/311765) de Microsoft c’est gratuit et plus stable.
Messages postés
492
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
16 mai 2007
12
Voici un lien qui devrait t'aider
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Sinon tu peux utiliser un des composant du framework : "WebBrowser".

En lui passant l'adresse d'un fichier doc dans sa propriété Url ca devrait te l'ouvrir. Pas forcément très propre mais c'est rapide :)

Par contre, je ne sais pas si le WebBrowser fait partie du framework 1 ou uniquement 2 et +
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Salut,

Le contrôle WebBrowser ".NET" en tant que tel est disponible à partir de .NET 2.0 mais en .NET 1.1 il suffit de se servir directement du WebBrowser COM en l'ajoutant à sa toolbox (Navigateur Web Microsoft, shdocvw.dll)

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
10
Date d'inscription
mardi 13 septembre 2005
Statut
Membre
Dernière intervention
22 avril 2009

J’ai déjà construit une application qui ouvre Ms Word dans
un Contrôle utilisateur mais le problème est que :


- Ms Word doit être installer sur la machine (la même
version d’office chaque fois).


- L’application est trop lourde.



 

J’ai utilisé le lien suivant : http://msdn2.microsoft.com/fr-fr/library/78whx7s6(VS.80).aspx


Alors j'ai pensé à la technique [dico.aspx?mot=WYSIWYG WYSIWYG]([dico.aspx?mot=WYSIWYG http://www.csharpfr.com/dico.aspx?mot=WYSIWYG])

(Les documents doivent
être ouverts en mode lecture seul ou autre selon le type d’utilisateur)



using
System;





using
System.Collections;





using
System.ComponentModel;





using
System.Drawing;





using
System.Data;





using
System.Windows.Forms;






 






using
System.Runtime.InteropServices;





namespace
WinWordControl





{






   
public
partial
class
MSWordControl :
UserControl






    {






        #region
DllImport API






        [DllImport("user32.dll")]






       
public
static
extern
int
FindWindow(string strclassName, string strWindowName);






 







        [DllImport("user32.dll")]






       
static
extern
int SetParent(int
hWndChild, int hWndNewParent);






 







        [DllImport("user32.dll",
EntryPoint = "SetWindowPos")]






       
static
extern
bool SetWindowPos(






           
int hWnd,               //
handle to window






           
int hWndInsertAfter,    //
placement-order handle






           
int X,                  //
horizontal position






           
int Y,                  //
vertical position






           
int cx,                 //
width






           
int cy,                 //
height






           
uint uFlags             //
window-positioning options






        );






 







        [DllImport("user32.dll",
EntryPoint = "MoveWindow")]






       
static
extern
bool MoveWindow(






           
int hWnd,






           

int
X,






           
int
Y,






           
int
nWidth,






           

int
nHeight,






           
bool bRepaint






        );






 







        #endregion






 







        #region
Const






       
const
int
SWP_DRAWFRAME = 0x20;






       
const
int SWP_NOMOVE
= 0x2;






       
const
int SWP_NOSIZE
= 0x1;






       
const
int
SWP_NOZORDER = 0x4;






        #endregion






 







        #region
Variables






       
object missing = System.Reflection.Missing.Value;






       
public
bool loaded = false;






       
private
static Word.ApplicationClass word = null;






       

public

static
int wordWnd =
0;






       
private
static
string lFileName = null;






        #endregion






 







       
public MSWordControl()






        {






           
InitializeComponent();






        }






 







       
~MSWordControl()






        {






           
try







            {






               
if (word != null)






                {






                   
CloseDoc();






                   
CloseWord();






                }






            }






           
catch (Exception ex)






            {






               
throw ex;






            }






        }






       
public
void
LoadWord()






        {






 







           
if (word == null)






            {






               
word = new Word.ApplicationClass();






               
if (wordWnd 0) wordWnd FindWindow("Opusapp", null);






               
if (wordWnd != 0)






                {






                   
SetParent(wordWnd, this.Handle.ToInt32());






                   


try






                    {






                       
NewDoc();






                       
RestoreWord(false);






                       
CloseDoc();






                       
word.Visible = true;






                       
word.Activate();






                       
MoveWindow(wordWnd, 0, 0, this.Bounds.Width,
this.Bounds.Height + 20, true);






                       
SetWindowPos(wordWnd, this.Handle.ToInt32(),
-5, -35, this.Bounds.Width, this.Bounds.Height, SWP_NOMOVE | SWP_DRAWFRAME);






 







                   


}






                   
catch
(Exception ex)






                   
{






                       

throw ex;






                   
}






                   

this.Parent.Focus();






               

}           






          
     loaded = true;






            }






        }






 







       
public
void NewDoc()






        {






           
NewDoc(missing);






        }






       
public
void NewDoc(object template)






       

{






           
word.Application.Documents.Add(ref
template, ref missing, ref
missing, ref missing);






            word.ActiveWindow.DisplayRightRuler
= false;






           
word.ActiveWindow.DisplayScreenTips = false;






            word.ActiveWindow.DisplayVerticalRuler
= false;






           
word.ActiveWindow.DisplayRightRuler = false;






           
word.ActiveWindow.ActivePane.DisplayRulers = false;






            word.ActiveWindow.ActivePane.View.Type
= Word.WdViewType.wdPrintView;






        }






 







       
public
void OpenDoc(string fileName)






       

{






            OpenDoc(fileName, false);






    
   }






 







       
public
void OpenDoc(string fileName, bool
readOnly)






       

{






           
this.SuspendLayout();






           
try







            {






               
object
rdOnly = readOnly;






               
object oFileName = fileName;






               
lFileName = fileName;






                word.Application.Documents.Open(ref oFileName,






                   

ref missing, ref
rdOnly, ref missing, ref
missing, ref missing,






                   

ref missing, ref
missing, ref missing, ref
missing, ref missing,






              
     
ref
missing, ref missing, ref
missing, ref missing, ref
missing);






                word.ActiveWindow.DisplayRightRuler
= false;






               
word.ActiveWindow.DisplayScreenTips = false;






                word.ActiveWindow.DisplayVerticalRuler
= false;






               
word.ActiveWindow.DisplayRightRuler = false;






               
word.ActiveWindow.ActivePane.DisplayRulers = false;






                word.ActiveWindow.ActivePane.View.Type
= Word.WdViewType.wdPrintView;






           

}






           
catch
(Exception ex)






            {






               
throw
ex;






            }






           
this.ResumeLayout();






           
this.Refresh();






        }






 







       
public
void
RestoreWord(bool rst)






        {






           
int counter = word.ActiveWindow.Application.CommandBars.Count;






           
for (int i = 0; i
< counter; i++)






           

{






               
try







                {






                   
word.ActiveWindow.Application.CommandBars[i].Enabled = rst;






               

}






               
catch







                {}






            }






        }






       
public
void
PrintDoc()






        {






           
try







            {






               

object
copies = "1";






               
object
pages = "";






               
object
range = Word.WdPrintOutRange.wdPrintAllDocument;






               
object
items = Word.WdPrintOutItem.wdPrintDocumentContent;






               
object
pageType = Word.WdPrintOutPages.wdPrintAllPages;






               
object
oTrue = true;






               
object
oFalse = false;






 







               
word.ActiveDocument.PrintOut(






                   

ref oTrue, ref
oFalse, ref range, ref
missing, ref missing, ref
missing,






                   


ref
items, ref
copies, ref pages, ref
pageType, ref oFalse, ref
oTrue,






                   

ref missing, ref
oFalse, ref missing, ref
missing, ref missing, ref
missing);






 







            }






           
catch (Exception ex)






            {






               
throw ex;






            }






        }






 







       
public
void
CloseDoc()






        {






           
try







            {






               
object doNotSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;






                word.ActiveDocument.Close(ref doNotSaveChanges, ref
missing, ref missing);






            }






           
catch







            { }






        }






 







       
public
void
CloseWord()






        {






           
try







            {






               
if (word != null)






                {






                   

object doNotSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;






                   
word.Quit(ref doNotSaveChanges, ref missing, ref
missing);






               

}






            }






           
catch







            { }






        }






    }





}
Messages postés
10
Date d'inscription
mardi 13 septembre 2005
Statut
Membre
Dernière intervention
22 avril 2009

Je n’arrive pas à optimiser mon petit programme