<p>J’ai mon code comme suit :</p>
<pre><code class="lang-auto">Microsoft.Office.Interop.Excel.Application oXL = null;
Microsoft.Office.Interop.Excel.Sheets sheets;
Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Workbooks.Add(System.Reflection.Missing.Value);
/*
* Here is the complete detail's about Workbook.Open()
*
* Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format,
* Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin,
* Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)
*/
Workbook workbook = excel.Workbooks.Open(
System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
sheets = workbook.Worksheets;
</code></pre>
<p>Maintenant, pour la ligne :</p>
<pre><code class="lang-auto">workbook = excel.Workbooks.Open(
System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Template.xlsx"),
Missing.Value, true, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value,
Missing.Value);
</code></pre>
<p>Cela s’exécute directement depuis Visual Studio (F5) mais quand j’essaie d’y accéder avec IIS, cela ne fonctionne pas.<br>
L’erreur suivante est générée :</p>
<blockquote></blockquote>
<p>Microsoft Office Excel ne peut pas accéder au fichier ‘c:\inetpub\wwwroot\Timesheet\App_Data\Template.xlsx’. Il y a plusieurs raisons possibles :</p>
<ul>
<li>
<p>Le nom de fichier ou le chemin n’existe pas.</p>
</li>
<li>
<p>Le fichier est utilisé par un autre programme.</p>
</li>
<li>
<p>Le classeur que vous essayez de sauvegarder a le même nom qu’un classeur actuellement ouvert.</p>
</li>
</ul>
<p>J’ai essayé les solutions de contournement suivantes :</p>
<blockquote></blockquote>
<ul>
<li>
<p>Le dossier et le fichier existent, accès donné à l’utilisateur IUSR_### (utilisateur IIS) et à l’utilisateur ASPNET dans le dossier où se trouve le fichier.</p>
</li>
<li>
<p>Dans les Services de composants (DCOM), accès donné à l’utilisateur approprié.</p>
</li>
</ul>
<p>J’ai déjà donné toutes les permissions au dossier où le modèle (.xlsx) se trouve.</p>
<p>Des suggestions ?</p>
<hr>
<p><em>Source : <a href="https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?forum=innovateonoffice" rel="noopener nofollow ugc">Stack Overflow</a></em></p>