[英]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.