更新单元格中的值,所有其他单元格将自动更改

更新单元格中的值,所有其他单元格将自动更改

问题描述:

例如,我有一个电子表格excel。我想用C#阅读它。更新单元格中的值,所有其他单元格将自动更改

在电子表格中,我有两个或更多个小区:

A1 = 0 
B1 = A1 + 7 

是否有可能是,如果我使用C#和A1的值更改为1,则B1细胞将被自动更新?

+0

你在做一个Excel插件或这是正在读取Excel文件一个独立的程序? – Flanfl

+0

它是一个读取excel文档的独立程序。谢谢! – olidev

+1

它是xls还是xslx文件? –

第二个单元格将自动更新。下面是使用MS Excel的对象模型(包括Microsoft.Interop.Excel.dll)一些代码:

using System; 

namespace exceltest2 
{ 
    using Microsoft.Office.Interop.Excel; 

    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      Application excel = null; 
      Workbook wb = null; 
      try 
      { 
       // run Excel 
       excel = new Application(); 
       excel.Visible = false; 

       // Open file 
       wb = excel.Workbooks.Open(
        @"D:\test.xlsx", Type.Missing, false, // Read-Only? 
        Type.Missing, Type.Missing, Type.Missing, 
        Type.Missing, Type.Missing, Type.Missing, 
        Type.Missing, Type.Missing, Type.Missing, 
        Type.Missing, Type.Missing, Type.Missing); 

       // Read worksheets 
       Sheets sheets = wb.Worksheets; 

       // Select worksheets 
       Worksheet ws = (Worksheet)sheets.get_Item("Table1"); 

       Range range = (Range)ws.get_Range("A1", "A1"); 

       // Check Values #1 
       Console.WriteLine(ws.get_Range("A1", "A1").Value2.ToString()); 
       Console.WriteLine(ws.get_Range("A2", "A2").Value2.ToString()); 

       range.Cells[1, 1] = 15; 

       // Check Values #2 
       Console.WriteLine(ws.get_Range("A1", "A1").Value2.ToString()); 
       Console.WriteLine(ws.get_Range("A2", "A2").Value2.ToString()); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
      } 
      finally 
      { 
       wb.Save(); 
       wb.Close(false, null, null); 
       excel.Quit(); 
       Console.ReadLine(); 
      } 
     } 
    } 
} 
+0

太棒了!按我想要的完美工作。非常感谢! – olidev

您可以使用C#在OleDbConnection,OleDbDataAdapter和DataSet的帮助下访问Excel表格。这里是一个示例,如何修改excel文件和单元格值:http://csharp.net-informations.com/excel/csharp-excel-oledb-update.htm

+0

,excel文件非常复杂,所以我不能用Id来查询它的列,我需要找到使用单元格值的单元格,例如:B1 – olidev