我想连续创建和编写Excel文件。我必须在下面编写代码,但我想添加我不断获得的所有数据。
CODE:
Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[1, 1] = "http://csharp.net-informations.com";
xlWorkBook.SaveAs("csharp-Excel.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
//xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\csharp-Excel.xls");
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
在这段代码中,当启动应用程序时,它总是说你想要替换它,它总是在程序获取数据时关闭应用程序。
这是我想要的功能:我想像这里一样附加文件。
StreamWriter fileWriter = new StreamWriter("test.txt", true);
fileWriter.WriteLine(jointHead.Position.X);
fileWriter.Close();
这种问题的解决方案是什么? 谢谢......
答案 0 :(得分:0)
要附加文件,请使用此代码insead:
using(StreamWriter fileWriter = new StreamWriter(@"c:\test.txt", true))
{
fileWriter.WriteLine("test");
}
否则你不会写任何文件,因为你在写入文件之前将其关闭。这将附加文件并以正确的方式关闭流。
Here是linq to sql教程的链接。这可能有助于您找到用于保存和加载数据的神解决方案
答案 1 :(得分:0)
Excel文件是二进制文件,因此连续写入Excel文件并不合理。
我建议的最佳解决方案是创建一个CSV文件,然后继续写入。与Excel文件不同,CSV文件可以视为简单的文本流,可以由Excel本机打开。
答案 2 :(得分:0)
btw - 我知道你的MessageBox.Show(“Exception ...”)是用于调试目的的。确保不要将其保留在最终应用程序中,而是考虑某种带有“重要性”枚举的日志记录功能。
除此之外,我很想问为什么使用excel文件而不是其他可扩展的存储介质。毕竟,你可以保存到数据库,在需要时查询它并显示带有过滤内容的excel文件。这样,除了在一般的releaseObject()try {} / catch {}之外,你不会冒超过excel行最大值的风险,这在你的错误处理中没有被照顾。 只是我的苏格兰腰带和牙套的态度:)。