簡體   English   中英

使用Excel.Interop C#保存覆蓋和更改

[英]Save Overwrite and changes using Excel.Interop C#

所有,

我有下面的代碼可以正常工作,但是我想保存(覆蓋更改)而不是SaveAs。 就我所知,Close(True)應該可以實現這一點,但是它仍然為用戶提供了另存為選項。 :S

在下面的任何幫助/建議將不勝感激。

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using System.Xml;
using Microsoft.Office.Interop.Excel;

namespace Dynamic.Script_8D58F1E2C23B36A
{
    // Script generated by Pega Robotics Studio 8.0.1072.0
    // Please use caution when modifying class name, namespace or attributes
    [OpenSpan.TypeManagement.DynamicTypeAttribute()]
    [OpenSpan.Design.ComponentIdentityAttribute("Script-8D58F1E2C23B36A")]
    public sealed class Script
    {
        public void deleterow(string WorkbookName2)
        {
            Microsoft.Office.Interop.Excel.Application myApp;
            Microsoft.Office.Interop.Excel.Workbook myWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet myWorkSheet;
            Microsoft.Office.Interop.Excel.Range range;
            myApp = new Microsoft.Office.Interop.Excel.Application();
            myWorkBook = myApp.Workbooks.Open(WorkbookName2, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
            myWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkBook.Worksheets.get_Item(1);
            range = (Microsoft.Office.Interop.Excel.Range)myWorkSheet.Application.Rows[1, Type.Missing];
            range.Select();
            range.Delete(Microsoft.Office.Interop.Excel.XlDirection.xlUp);
            myWorkBook.Close(true);
            myApp.Quit();
        }
    }
}

因此,您可以執行以下操作以阻止DisplayAlerts出現:

myApp.DisplayAlerts = false;

然后,如果要保存並指定文件名,則可以執行以下操作:

//specifying a file name
myWorkSheet.SaveAs(filename, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, true, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing);
myWorkBook.Close(true);

或者,您可以通過以下操作簡化操作:

myWorkBook.Close(SaveChanges:=True, Filename:=YourFileDirectory/FileName)

如果只想保存一個存在的文件而不指定文件目錄/文件名。 只要這樣做:

myApp.DisplayAlerts = false;
myWorkBook.Save();
myWorkBook.Close(true);

您可以暫時“沉默” Excel

myApp.DisplayAlerts = false;
myWorkBook.Close(true);
myApp.DisplayAlerts = true;

好了,您應該考慮釋放COM對象

例:

if (obj != null && Marshal.IsComObject(obj))
{
    Marshal.ReleaseComObject(obj);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM