2013-09-06 15 views
1

J'essaie d'imprimer une feuille excel (2003) en utilisant C#. Il y a probablement une référence à ajouter, mais après quelques recherches, même avec quelques références suggérées, je ne peux pas savoir quel code utiliser car tout ce que j'ai essayé ne fonctionne pas pour une raison quelconque, donc je ne sais même pas avoir un exemple de code à afficher pour montrer ce que j'ai jusqu'à présent. Je n'ai fondamentalement aucune idée de comment faire pour que mon programme imprime une feuille excel sélectionnée afin que toute aide soit géniale.Impression d'une feuille Excel 2003 en utilisant C#

Merci d'avance.

+0

Jetez un oeil à: http://stackoverflow.com/questions/10900565/excel-interop-print –

+0

Je ne suis pas sûr à 100% si cela va accomplir ce que je veux, mais de toute façon, qu'est-ce que je mets xlexcel et xlWorkBook à? J'obtiens que je mettrais xlWorkSheet au nom de la feuille de travail et xlRange à la plage de cellules que je veux imprimer et que xlWorkBook est peut-être défini sur le chemin de mon classeur, mais je ne sais pas quoi faire pour xlexcel. –

Répondre

1

Donc, fondamentalement, la meilleure façon cernées à faire est d'utiliser Microsoft.Office.Interop.Excel

object misValue = System.Reflection.Missing.Value; 

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); 
Microsoft.Office.Interop.Excel.Workbook wb = excelApp.Workbooks.Open(Form1.excelPath, misValue, misValue, misValue, 
    misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue); 
Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[1]; 

//bring about print dialogue 
bool userDidntCancel = excelApp.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogPrint].Show(misValue, 
    misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, 
    misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, 
    misValue, misValue, misValue, misValue, misValue); 

userDidntCancel apporte la boîte de dialogue d'impression et retourne true ou false indiquant si l'utilisateur a appuyé "IMPRIMER" ou "ANNULER" dans la boîte de dialogue d'impression que vous pouvez utiliser ou non. J'ai préféré cette méthode car elle permet à l'utilisateur de changer d'imprimantes et d'autres propriétés et, à mon avis, c'est beaucoup mieux de cette façon.

Le seul problème que j'ai trouvé avec ceci est qu'il imprime quelle feuille de travail a été ouverte et enregistrée manuellement pour la dernière fois. Par exemple, dans mon cas, mon programme apporte des modifications à une feuille de calcul, puis l'enregistre. Toutefois, si l'utilisateur a manuellement ouvert la feuille de calcul en dehors du programme et enregistré quelque chose sur une autre feuille de calcul, mon programme imprimera cette feuille de calcul au lieu de celle qu'il vient d'éditer. Je n'arrive pas à comprendre comment résoudre ce problème, donc si quelqu'un a des suggestions, n'hésitez pas à commenter.

Questions connexes