私は、クライアント マシンで Excel ファイルを作成する必要があるプログラムを作成している途中で、保存して更新した後、再度インポートしてデータベースに変更を適用する必要があります。エクスポート ビットは正常に動作しますが、Web アプリケーションからインポートすると、ワークブックにワークシートがありません。開発マシンで実行すると、つまり、ファイルが配置されているのと同じマシンで Web サイトが実行されている場合、正常に動作します。
私のコードは次のとおりです。
try
{
Productsfile = new FileInfo(PathandFileName);
}
catch (Exception ex)
{
lblStatus.Text = string.Format("Error getting file info {0}", ex.Message);
return;
}
lblStatus.Text += "File Opened succesfully " + Productsfile.FullName + Environment.NewLine;
//Open and read file
try
{
using (ExcelPackage datafile = new ExcelPackage(Productsfile))
{
ExcelWorkbook wkb = datafile.Workbook;
if (wkb != null)
{
lblStatus.Text += string.Format("The workbook is not null and there are {0} worksheets", wkb.Worksheets.Count) + Environment.NewLine;
コードが最後のラベルの更新に到達することを確認しました。これは、ワークブックにワークシートがないことを示していますが、ワークブック自体が null ではないことが重要です。
エクスポートを作成したとき、データ ストリームをサーバーからクライアントに転送する次のコードが使用されました。
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Products.xlsx");
Response.BinaryWrite(pck.GetAsByteArray());
Response.End();