相关疑难解决方法(0)

C#使用Excel进程销毁多个Excel对象的正确方法

我有一个C#控制台程序.运行时,它会实例化一些Excel对象,例如:(openExcelO).

当程序运行完毕后,我有一个关闭Excel(closeExcel)的方法,它应该正确地清理Excel进程.在任务管理器中,我可以看到剩余的Excel残余.关闭例程从互联网示例拼凑而成:

    private void openExcelO (string dir) {

        try {
            xlApp = new Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(dir + "PortfolioOptimization5.xlsm",
                0, false, 5, "", "", true, 
                Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, 
                "\t", false, false, 0, true, 1, 0);
            xlMarkowitz = (Excel.Worksheet)xlWorkBook.Sheets["Markowitz"];
            xlWeights = (Excel.Worksheet)xlWorkBook.Sheets["Weights"];

        } catch (Exception ex) {
            ReportError("PortfolioOptimization", "openExcel", ex.ToString());
        }

    }


    private void closeExcel () {
        object misValue = System.Reflection.Missing.Value;
        try {

            if (xlWeights != null) releaseObject(xlWeights);
            if (xlMarkowitz != null) releaseObject(xlMarkowitz);

            xlWorkBook.Close(false, misValue, misValue);
            if (xlApp != null) xlApp.Quit();

            if (xlWorkBook …
Run Code Online (Sandbox Code Playgroud)

c# com excel excel-interop

3
推荐指数
1
解决办法
2903
查看次数

如何处置我的 Excel 应用程序

我的代码如下

Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(file);

Excel.Worksheet xlSheet = xlWorkbook.Sheets[1]; // get first sheet
Excel.Range xlRange = xlSheet.UsedRange;
Run Code Online (Sandbox Code Playgroud)

这些是我的函数中使用的唯一变量

foreach (Excel.Worksheet XLws in xlWorkbook.Worksheets)
{
    // do some stuff 

    xlApp.UserControl = false;

    if (xlRange != null)
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlRange);

    if (xlSheet != null)
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlSheet);

    if (xlWorkbook != null)
        System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlWorkbook);

    xlRange = null;
    xlSheet = null;
    xlWorkbook = null;
    xlApp.Quit();

    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp);
}
Run Code Online (Sandbox Code Playgroud)

但我仍然在任务管理器中得到EXCEL.EXE

请帮忙?

c# excel automation

3
推荐指数
2
解决办法
1万
查看次数

为什么excel仍然开放?

可能重复:
如何在C#中正确清理Excel互操作对象

我用这个函数计算一些数据的线性趋势:

private string Trend(object conocido_y, object conocido_x, object nueva_matriz_x)
{
    string result = String.Empty;
    try {
        Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
        result = ((Array)xlApp.WorksheetFunction.Trend(conocido_y, conocido_x, nueva_matriz_x, true)).GetValue(1).ToString();
        xlApp.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
        xlApp = null;
    }
    catch (System.Runtime.InteropServices.COMException ex) {
        DError.ReportarError(ex, false);
    }
    catch (Exception ex) {
        DError.ReportarError(ex);
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

结果很好,但excel应用程序没有关闭,如果我打开任务管理器进程仍在运行,为什么?

c# asp.net excel interop

2
推荐指数
1
解决办法
2539
查看次数

获取数据后关闭EXCEL应用程序进程

我正在尝试通过以下方式从列表中的 Excel 文件获取列数据:

private void Form1_Load(object sender, EventArgs e)
        {
            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/test.xlsx");
            Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
            Excel.Range xlRange = xlWorksheet.UsedRange;

            int rowCount = xlRange.Rows.Count;
            int colCount = xlRange.Columns.Count;

            List<string> FirstColumnValues = new List<string>();
            List<string> SecondColumnValues = new List<string>();

            for (int row=1; row <= rowCount; row++)
            {
                for (int col = 1; col <= colCount; col++)
                {
                    switch (col)
                    {
                        case 1:
                            FirstColumnValues.Add(xlRange.Cells[row, col].Value2.ToString());
                            break;
                        case 2:
                            SecondColumnValues.Add(xlRange.Cells[row, col].Value2.ToString());
                            break;
                    }
                }
            }

            if …
Run Code Online (Sandbox Code Playgroud)

c# excel process

2
推荐指数
1
解决办法
1万
查看次数

读取 excel (.xls) 模板,用文本框值替换变量并在 C# 中保存 excel 文件

我注意到在准备我的业务规模时,我意识到这项工作花费了太长时间。一个excel文件从理事会通过互联网发送给我们,我们计算我们的作品并使用相同的方式发送它们。所以我想自动化准备业务规模。

为此,我创建了一个 Windows 窗体应用程序。我的应用程序是一个桌面应用程序 (WinForms)。所有数据都写入文本框。当我们单击“确定”按钮时,程序必须读取“template.xls”并将显示括号“{}”的所有变量替换为文本框值。但我不知道如何读取 .xls 文件,用值替换变量并将模板保存为完成的文档。我在下面添加了excel文件的屏幕截图。在此处输入图片说明

你能帮我怎么做吗?
亲切的问候。

c# excel

2
推荐指数
1
解决办法
3417
查看次数

使用C#中的savefiledialog类保存excel文件

我需要创建并保存Excel文件,而不在代码中通知路径和文件名.所以我可以使用savefiledialog来显示保存框以输入路径和文件名,但我无法正确使用它.我尝试使用worksheet.saveas,但是这个类没有显示保存框来输入路径和文件名.如何使用该保存框保存excel文件?

c# excel

2
推荐指数
1
解决办法
1万
查看次数

通过.NET关闭时Excel 2007挂起

我有一个Visual Basic .NET程序,需要打开和关闭Excel电子表格.打开和阅读电子表格工作正常,但尝试关闭Excel 2007应用程序会导致它挂起.它似乎关闭,但如果你查看任务管理器,应用程序仍在运行.我用来关闭它的代码是

wbkData.Close(saveChanges:=False)
appExcel.Quit()
wbkData = Nothing
appExcel = Nothing
Run Code Online (Sandbox Code Playgroud)

如何让Excel正常关闭?

.net vb.net excel

1
推荐指数
1
解决办法
2469
查看次数

如何结束excel.exe进程?

我试图从vb.net 3.5获得excel文件的excel表名,但它打开但excel.exe仍然在这个过程中.如何在不从任务管理器中删除excel.exe的情况下停止进程?

我意识到新的excel.application开始了新的过程.

我试图使用戒烟,关闭和处置.......................没有任何效果

以下是我的代码

   Dim sheetName As New Excel.XlSheetType
   Dim newExcell As New Excel.Application
   Dim newWorkBook As Excel.Workbook = app.Workbooks.Open(MyFileName)
   Dim worksheetName As String
   Dim ws As Excel.Worksheet = CType(WB.Worksheets.Item(1), Excel.Worksheet)
    worksheetName = ws.Name
Run Code Online (Sandbox Code Playgroud)

我不能使用kill因为有其他excel应用程序正在运行,所以如何从处理器关闭这个特定的excel.exe.请帮忙

.net vb.net excel .net-3.5

1
推荐指数
1
解决办法
6852
查看次数

C#show hide Excel窗口

我正在为Excel开发一个C#add in(使用VSTO工具).我有一个异步进程正在运行,它会不时弹出通知气泡,显示在靠近任务栏的所有窗口上方.

我能够将事件绑定到弹出的这些气泡上的点击.如果在用户点击时隐藏了Excel插件,我想显示Excel窗口并导航到某个工作表.

这可能吗 ?

c# excel

1
推荐指数
1
解决办法
5725
查看次数

在c#中保存excel文件

  void excelsave()
  {
      try
      {
          ApplicationClass app = new ApplicationClass(); // the Excel application.

          Workbook book = null;
          Worksheet sheet = null;
          Range range = null;
          // the range object is used to hold the data
          app.Visible = false;
          app.ScreenUpdating = false;
          app.DisplayAlerts = false;

          string execPath =
            Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

          book = app.Workbooks.Open(@"E:\SSIS\ABC\Book1.xls",
               Missing.Value, Missing.Value, Missing.Value,
               Missing.Value, Missing.Value, Missing.Value, Missing.Value,
               Missing.Value, Missing.Value, Missing.Value, Missing.Value,
               Missing.Value, Missing.Value, Missing.Value);
          sheet = (Worksheet)book.Worksheets[1];

          range = sheet.get_Range("A1", Missing.Value);
          range.Columns.ColumnWidth = 22.34;
          range = sheet.get_Range("B1", Missing.Value); …
Run Code Online (Sandbox Code Playgroud)

c# excel

1
推荐指数
1
解决办法
6万
查看次数

将Excel文件读入.NET应用程序的更快方法是:ADO.net还是Microsoft.Office.Interop.Excel.Application?

我正在将一个非常大的Excel文件读入VB.net应用程序.用户在运行时从文件选择器指定文件.我目前正在使用Microsoft.Office.Interop.Excel.Application应用程序接口逐行读取Excel数据.像这样...

first = Excel.Cells(rowindex, FirstColumnIndex).value
Run Code Online (Sandbox Code Playgroud)

我需要读取大的Excel文件(80000行),当前的方法需要很长时间.我想知道是否有更快的方法.我知道可以用ADO.net读取文件.这更快吗?还有更快的方法吗?

注意显然,在Excel文件中保存这么多数据并不是一个想法,但这就是我需要的数据(其中一些来自其他地方)的存储位置.

.net com excel ado.net office-interop

1
推荐指数
1
解决办法
6840
查看次数