0

我想连续创建和写入 Excel 文件。我必须在下面编写代码,但我想添加我连续获得的所有数据。

代码:

        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();

有什么办法可以解决这类问题?谢谢...

4

3 回答 3

0

Excel 文件是二进制文件,因此连续写入 Excel 文件并没有什么意义。

我可以建议的最佳解决方案是创建一个 CSV 文件,然后不断地写入该文件。与 Excel 文件不同,CSV 文件可以被视为简单的文本流,并且可以由 Excel 本地打开。

于 2012-02-14T14:09:13.057 回答
0

要附加文件,请使用以下代码:

using(StreamWriter fileWriter = new StreamWriter(@"c:\test.txt", true))
{
    fileWriter.WriteLine("test");
}

否则,您将不会向文件写入任何内容,因为您在写入文件之前将其关闭。这将以正确的方式附加文件并关闭流。

是 linq to sql 教程的链接。这可能会帮助您找到保存和加载数据的神解决方案

于 2012-02-14T14:08:10.957 回答
0

顺便说一句-我知道您的 MessageBox.Show("Exception...") 是出于调试目的。确保不要将其留在最终应用程序中,而是考虑某种带有“重要性”枚举的日志记录功能。

除此之外,我很想问为什么使用 excel 文件而不是其他可扩展的存储介质。毕竟,您可以保存到数据库,在需要时对其进行查询,并显示一个包含过滤内容的 Excel 文件。这样,您就不会冒超过 excel 行最大值的风险,这在您的错误处理中不适用,除了一般的 releaseObject() try{}/catch{}。

只是我的苏格兰腰带和大括号的态度:)

于 2012-02-14T14:26:03.237 回答