在编辑打开的 Excel 文件时以 C# 读取和写入该文件

本文关键字:文件 读取 编辑 Excel | 更新日期: 2023-09-27 18:36:58

早上好!

几个星期以来,我一直在为一个问题而苦苦挣扎,当最糟糕的部分似乎得到解决时,现在我的 Excel 文件遇到了问题。

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

-带有来自数据中心的引用的单元格,其值不断更新。这些值需要由 Unity3d 使用 C# 读取

- 具有由 Unity3d 使用 C# 写入的值的单元格,这些值由 Datahub 不断读取

数据中心需要打开 excel 文件才能读/写,但另一方面,Unity3d 到 C# 需要关闭文件。

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

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

在编辑打开的 Excel 文件时以 C# 读取和写入该文件

如果您使用 ByteScout 电子表格 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