如何阅读包含多个工作表的Excel工作表,并仅编辑一个工作表

时间:2013-12-05 12:00:23

标签: c# xml excel

我有一个程序从XML工作表中获取值,并使用TestWriter将它们写入Excel工作表。

FileStream ostrm;
                StreamWriter strm;
                TextWriter txtWrt = Console.Out;
                ostrm = new FileStream(path + "\\Output.xls", FileMode.Truncate, FileAccess.Write);

现在输出文件Output.xls有多个选项卡,但我只需要截断并写入第一个工作表,而保持其他选项卡不变。我使用下面的代码,但它删除了所有其他标签并编辑了第一个标签。

public Excel.Application app = null;
    public Excel.Workbook workBook = null;
    public Excel.Worksheet workSheet = null;
    app = new Excel.Application();
            workBook = app.Workbooks.Add();
            workSheet = (Worksheet)workBook.Worksheets.get_Item(1);
            workBook.SaveAs(path+ "\\Output.xls");
            workBook.Close();
            app.Quit();

我需要找到一种可以避免这种情况的方法。

感谢您的期待!

2 个答案:

答案 0 :(得分:0)

MSDN声明FileMode.Truncate“指定操作系统应该打开现有文件。当文件打开时,应该截断它,使其大小为零字节。”您可以尝试更改为FileMode.OpenOrCreate,然后在写入之前清除选项卡。

答案 1 :(得分:0)

您不能以您描述的方式使用truncate命令。它用于文本文件。 对于初学者,你为什么要使用FileStream?

您应该使用XLSX开放式xml格式Excel文件类型,并使用Open XML SDK。 这是一篇解释如何的文章 http://www.codeproject.com/Articles/670141/Read-and-Write-Microsoft-Excel-with-Open-XML-SDK

虽然XLS格式可以接受xml数据,但它并不像XLSX格式文件那样有效地进行互操作。 虽然您可以将文件流用于小型操作,但它已经受到限制,您已经遇到了这些限制。