Je suis en train de convertir un fichier docx en fichier pdf. J'utilise le code de stackoverflow, mais modifié pour permettre la sélection dynamique d'un fichier à ouvrir (plutôt que d'une valeur codée en dur). Lorsque je l'exécute, j'obtiens une exception sur la méthode Open() - impossible de trouver le fichier. Je sélectionne le fichier en utilisant un contrôle fileupload donc je sais que le fichier est là. Que se passe-t-il?"Fichier introuvable" lors de l'ouverture à l'aide de microsoft.office.interop.word.application.documents.open()
Voici mon code:
using System;
using System.IO;
using Microsoft.Office.Interop.Word;
using OpenXmlPowerTools;
namespace DocxToPdf
{
public partial class WebForm1 : System.Web.UI.Page
{
public Microsoft.Office.Interop.Word.Document wordDoc;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void UploadButton_Click(object sender, EventArgs e)
{
if (DocxFileUpload.HasFile)
{
string docxFile = DocxFileUpload.PostedFile.FileName;
FileInfo fiFile = new FileInfo(docxFile);
if (Util.IsWordprocessingML(fiFile.Extension))
{
Guid pdfFileGuid = Guid.NewGuid();
string pdfFileLoc = string.Format(@"c:\windows\temp\{0}.pdf", pdfFileGuid.ToString());
Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
wordDoc = appWord.Documents.Open(docxFile);
wordDoc.ExportAsFixedFormat(pdfFileLoc, WdExportFormat.wdExportFormatPDF);
MsgLabel.Text = "File converted to PDF";
}
else
{
MsgLabel.Text = "Not a WordProcessingML document.";
}
}
else
{
MsgLabel.Text = "You have not specified a file.";
}
}
}
}
L'erreur se produit sur la "WordDoc = appWord.Documents.Open (docxFile);" ligne.
La propriété fileupload control FileName a juste le nom du fichier, pas le chemin qualifié complet. Je comprends pourquoi j'obtiens une erreur «fichier non trouvé» - c'est parce que le fichier ne contient pas le chemin qualifié complet. Ma question au groupe est la suivante: comment puis-je obtenir le chemin complet et le nom de fichier, afin que je puisse l'ouvrir? J'ai exécuté une session de débogage et examiné toutes les propriétés du contrôle fileupload et le contrôle FileInfo, mais ils ne l'ont pas. La propriété "FullPath" du contrôle FileInfo est définie sur "c: \ Program Files (x86) \ IIS Express \ monfichier.docx", mais ce n'est pas l'emplacement du fichier.
Voici de plus amples informations sur l'erreur: Exception System.Runtime.InteropServices.COMException dans DocxToPdf.dll (Désolé, nous n'avons pas trouvé votre fichier Est-il possible qu'il soit déplacé, renommé ou supprimé? C: \ Windows ... \ myfile.docx ...
J'ai googlé autour de ce sujet, mais aucune chance. S'il vous plaît aider! Merci.
Le problème réside dans la façon dont 'DocxFileUpload.PostedFile.FileName' est défini. sans ce code, ne peut pas vraiment aider – bnem