簡體   English   中英

如何連續寫入Excel文件?

[英]How can I write to an excel file continuously?

我想創建並連續寫入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();

這類問題有什么解決方案? 謝謝...

要附加文件,請使用以下代碼insead:

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

否則,您將不會向文件中寫入任何內容,因為在文件寫入之前將其關閉。 這將追加文件並以正確的方式關閉流。

是linq to sql教程的鏈接。 這可以幫助您找到用於保存和加載數據的解決方案

Excel文件是二進制文件,因此連續寫入Excel文件實際上沒有任何意義。

我建議的最佳解決方案是創建一個CSV文件,然后連續寫入該文件。 與Excel文件不同,CSV文件可以被視為簡單的文本流,並且可以由Excel本機打開。

順便說一句-我知道您的MessageBox.Show(“ Exception ...”)完全用於調試目的。 確保不要將其保留在最終應用程序中,而應考慮附加了“重要性”枚舉的某種日志記錄功能。

除此之外,我很想問為什么要使用excel文件而不是其他可伸縮存儲介質。 畢竟,您可以保存到數據庫,在需要時查詢它,並提供帶有過濾內容的excel文件。 這樣,您就不會冒超出excel行最大值的風險,除了常規的releaseObject()try {} / catch {}以外,您的錯誤處理都無法滿足。

只是我的蘇格蘭腰帶和牙套的態度:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM