在编辑时,在C#中读取并写入打开的Excel文件

时间:2016-03-02 10:42:51

标签: c# excel file unity3d

早上好!

我几周来一直在努力解决问题,而且最糟糕的部分似乎已经解决了,现在我的Excel文件出现了问题。

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

-Cells与Datahub的引用,这些值不断更新。这些值需要Unity3d使用C#

读取

-Cells使用C#写入Unity3d的值,Datahub会不断读取这些值

Datahub需要打开excel文件才能读/写,但另一方面,Unity3d通过C#需要关闭文件。

我已尝试使用excel文件中的宏来自动保存它并在C#中打开文件并在每次读/写时关闭它,但它不起作用。我还尝试将其作为副本自动保存,并在C#中打开该副本,但它也不起作用。

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

1 个答案:

答案 0 :(得分:0)

如果您使用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个或更多的同时连接!数据库能够提供更高的速度,因为它们的内部设计(索引等),而电子表格则更好地优化以存储数据。

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

披露:我与ByteScout有关联