这是我的代码:
Application app = null; //release this object
Workbook wrkbuk = null;//release this object
Worksheet wrksheet = null;//release this object
object misval = System.Reflection.Missing.Value;
app = new Application();
app.Visible = false;
string sPath = Server.MapPath("sample");
var workbukObj = app.Workbooks; //release this object
wrkbuk = workbukObj.Open(sPath + "\\TotalDistance.xlsx", misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval, misval);// releaase this object
wrksheet = ((Worksheet)wrkbuk.Worksheets[1]); //release this object
Range cells = ((Worksheet)wrkbuk.Worksheets[1]).Cells; //release this
int row = 2;
int column = 2;
wrksheet.Cells[row, column] = Convert.ToDateTime(txtFromDate.Text).ToString("dd-MM-yyyy") + " " + txtFromTime.Text;
row++;
wrksheet.Cells[row, column] = Convert.ToDateTime(txtToDate.Text).ToString("dd-MM-yyyy") + " " + txtToTime.Text;
row = 5;
column = 1;
for (int k = 0; k < finalPack.Count; k++)
{
wrksheet.Cells[row, column] = finalPack[k].vehicleNumber;
column++;
//wrksheet.Cells[row, column] = finalPack[k].driverName;
//column++;
//wrksheet.Cells[row, column] = finalPack[k].driverNumber;
//column++;
//wrksheet.Cells[row, column] = finalPack[k].driverAddress;
//column++;
if (finalPack[k].distanceTravelled == .001)
{
wrksheet.Cells[row, column] = "";
}
else
{
wrksheet.Cells[row, column] = Convert.ToDateTime(finalPack[k].frmTime).ToString("dd-MM-yyyy");
}
column++;
wrksheet.Cells[row, column] = finalPack[k].startAddress;
column++;
wrksheet.Cells[row, column] = finalPack[k].endAddress;
column++;
if (finalPack[k].distanceTravelled != .001)
{
wrksheet.Cells[row, column] = finalPack[k].distanceTravelled;
}
else
{
wrksheet.Cells[row, column] = "";
}
column++;
if (finalPack[k].tempDist != 0.0)
{
wrksheet.Cells[row, column] = finalPack[k].tempDist;
}
else
{
wrksheet.Cells[row, column] = "";
}
column++;
if (finalPack[k].totalDistance != 0.0)
{
wrksheet.Cells[row, column] = finalPack[k].totalDistance;
}
else
{
wrksheet.Cells[row, column] = "";
}
column = 1;
row++;
}
string filePath = Server.MapPath("DistanceReports") + "\\" + DateTime.Now.ToString("dd_MMM_yyyy HH_mm_ss") + ".xlsx";
wrkbuk.SaveAs(filePath, misval, misval, misval, misval, misval, XlSaveAsAccessMode.xlExclusive, misval, misval, misval, misval, misval);
wrkbuk.Close(Type.Missing, Type.Missing, Type.Missing);
workbukObj.Close();
string Timezone = "India Standard Time";
if (Session["timeZone"] != null)
Timezone = Session["timeZone"].ToString();
DateTime currentTime = timeZoned(Timezone);
FileInfo file = new FileInfo(filePath);
if (file.Exists)
{
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=" + "DistanceReport" + currentTime.ToString("yyyy/MM/dd HH:mm") + ".xlsx");
Response.AddHeader("Content-Type", "application/Excel");
Response.ContentType = "application/vnd.xls";
Response.AddHeader("Content-Length", file.Length.ToString());
Response.WriteFile(file.FullName);
}
try
{
app.Quit();
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.FinalReleaseComObject(cells);
Marshal.FinalReleaseComObject(wrksheet);
Marshal.FinalReleaseComObject(wrkbuk);
Marshal.FinalReleaseComObject(workbukObj);
Marshal.FinalReleaseComObject(app);
// wrkbuk.Close(null, null, null);
GC.Collect();
GC.WaitForPendingFinalizers();
}
catch
{
}
我正在尝试关闭在我的任务管理器中始终保持打开状态的 Excel.exe 实例。我在这里阅读了解决方案,但我无法做到。有什么我想念的吗?请帮忙。!