在C#中读取和写入一个打开的excel文件,正在编辑

早上好!

我一直在努力解决问题几个星期,当最糟糕的部分似乎解决了,现在我有一个Excel文件的问题。

我想要做的是通过程序(Datahub)读取和写入Excel文件(Test.xls),同时使用C#脚本通过Unity3d读取和写入相同的Excel文件。 我正在使用C#中的Bytescout电子表格从Excel读取/写入。 我有:

– 来自Datahub的引用,这些值不断更新。 Unity3d需要使用C#读取这些值

– 使用C#编写由Unity3d编写的值,这些值由Datahub持续读取

DataHub需要打开excel文件才能读写,但另一方面,Unity3d通过C#需要closures文件。

我已经尝试用excel文件中的macros来自动保存它,并在C#中打开文件,并在每次读取/写入时closures它,但它不起作用。 我也尝试自动保存为副本,并在C#中打开该副本,但它也不起作用。

你会知道如何面对这个问题吗? 非常感谢! 🙂

如果您使用ByteScout Spreadsheet SDK API,则可以使用Excel文件作为内存数据库来存储值并重新计算其他像这样的单元格:

private void ReCalculate() { Worksheet worksheet; worksheet = _spreadsheet.Workbook.Worksheets[0]; worksheet.Cell("A2").Value = System.Convert.ToInt32(TextBox1.Text); worksheet.Cell("B2").Value = System.Convert.ToInt32(TextBox2.Text); worksheet.Cell("C2").Formula = TextBox3.Text; worksheet.Cell("C2").Calculate(); TextBox4.Text = worksheet.Cell("C2").Value.ToString(); } 

如果你已经有了单元格内的数据和公式的电子表格,这种方式效果很好。

但是,如果你正在寻找一种存储和检索数据的好方法,那么你应该更好地使用数据库,因为它提供了一种可扩展和可靠的方式来存储大量的数据(数百万行),运行查询,实际上你可能2或更多的模拟连接! 数据库能够提供更高的速度,因为其内部devise(索引等),而电子表格更好地优化存储数据。

XLS,XSLX,CSV和其他文件更适合数据导出和从数据库导入数据。

披露:我隶属于ByteScout