我有一个程序从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();
我需要找到一种可以避免这种情况的方法。
感谢您的期待!
答案 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格式文件那样有效地进行互操作。 虽然您可以将文件流用于小型操作,但它已经受到限制,您已经遇到了这些限制。