工作簿是用C#创建的,有两个工作表,总是要求用Book7、Book8等进行覆盖

工作簿是用C#创建的,有两个工作表,总是要求用Book7、Book8等进行覆盖,c#,excel,C#,Excel,我想创建一个包含一个工作表的Excel工作簿,然后保存数据并关闭它。但它会创建两张纸。第2页和第1页。但它成功地写入了数据。每次我手动删除xlsx文件时,它都会要求我覆盖Book8.xlsx,即使没有具有此名称的文件 我只需要一张工作表,我也希望它有一个特定的名称,而不是Sheet1 class Program { static void Main(string[] args) { Excel excel = new Excel(@"d:\Test.xlsx",

我想创建一个包含一个工作表的Excel工作簿,然后保存数据并关闭它。但它会创建两张纸。第2页和第1页。但它成功地写入了数据。每次我手动删除xlsx文件时,它都会要求我覆盖Book8.xlsx,即使没有具有此名称的文件

我只需要一张工作表,我也希望它有一个特定的名称,而不是Sheet1

class Program
{
    static void Main(string[] args)
    {
        Excel excel = new Excel(@"d:\Test.xlsx", 1);

        excel.WriteToCell(0, 0, "Test2");
        excel.Save();
        excel.SaveAs(@"d:\Test.xlsx");

        excel.Close();
    }
}
内部Excel.cs

using Microsoft.Office.Interop.Excel;
using _Excel = Microsoft.Office.Interop.Excel;

namespace Excel
{
    class Excel
    {
        _Application excel = new _Excel.Application();

        Workbook wb;
        Worksheet ws;       

        public Excel(string path, int Sheet)
        {
            excel.Visible = false;
            wb = excel.Workbooks.Add();
            ws = wb.Worksheets.Add();
        }

        public void WriteToCell(int i, int j, string s)
        {
            i++;
            j++;
            ws.Cells[i, j].Value = s;
        }

        public void Save()
        {
            wb.Save();
        }

        public void SaveAs(string path)
        {
            wb.SaveAs(path);
        }

        public void Close()
        {
            wb.Close();
        }       
    }
}

删除行
ws=wb.Worksheets.Add()Excel
构造函数中选择code>以不创建第二张工作表

public Excel(string path, int Sheet)
{
    excel.Visible = false;
    wb = excel.Workbooks.Add();
    ws = (Worksheet)wb.Worksheets[1];
    if (ws == null)
    {
        Console.WriteLine("Worksheet could not be created. Check that your office installation and project references are correct.");
    }
}
要重命名工作表,请执行以下操作:

public RenameWorksheet(string newName)
{
    ws.Name = newName;
}
如果从目录中删除文件,则应将其删除。但是,如果你有一个弹出消息说文件存在,你想替换它,那么我猜这可能是人为错误。也许你找错目录了?有时发生在我们当中最好的人身上;)无论哪种方式,作为程序员,您都可以选择删除文件(如果文件在创建之前存在),以避免人为错误:

if(File.Exists(fileName))
{
    File.Delete(fileName);
}
如果不想替换它,也可以简单地重命名它

编辑

再次查看时,我意识到您正在创建一个新文件:

Excel excel = new Excel(@"d:\Test.xlsx", 1);
然后打电话:

excel.SaveAs(@"d:\Test.xlsx");

你还指望什么

谢谢你的回复。它工作得很好。但是,我仍然对此邮件有问题。此目录中没有Book8。您确定没有这样的文件吗?另外,在
Main()
中创建新文件之前,如果尝试
file.Exists(@“d:\Test.xlsx)
删除行
excel.SaveAs(@“d:\Test.xlsx”);