在C#用户控件中嵌入excel表

5 c# excel

我需要在C#语言的用户控件中嵌入Excel工作表部分(而不是整个工作表).我想操纵它上面的数据并将其保存在一个集合中.

最好的方法是什么?

epo*_*ter 6

我会用Excel COM库打开电子表格.如果添加对Microsoft Excel对象库的引用,则可以转到Com接口.

添加这些使用语句:

using Microsoft.Office.Interop;
using Microsoft.Office.Interop.Excel;
Run Code Online (Sandbox Code Playgroud)

然后您可以通过执行以下操作从电子表格中读取:

   private void GetData(string fileName, string tabName)
    {
        Workbook theWorkbook;

        Application ExcelObj = null;
        ExcelObj = new Application();

        theWorkbook = ExcelObj.Workbooks.Open(fileName,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing, Type.Missing, Type.Missing,
            Type.Missing, Type.Missing);


        Sheets sheets = theWorkbook.Worksheets;
        Worksheet worksheet = (Worksheet)sheets[tabName];

        Range range = worksheet.get_Range("A1:A1", Type.Missing);

        string data = range.Text as string;

        //
        // TODO : store the data
        //

        theWorkbook.Close(false, fileName, null);
    }
Run Code Online (Sandbox Code Playgroud)

此代码将A1单元格的内容读入字符串.

使用Excel COM接口的一个怪癖是,您必须访问Range中的数据,即使您只需要一个单元格.您可以将范围设置为一组单元格,然后您可以迭代它返回的集合以获取每个单元格的内容.

您还需要在文件名和选项卡名称上添加一些错误检查/处理.

还有一种方法可以使用ODBC从Excel中读取,但电子表格必须以某种方式进行格式化.第1行必须有标题数据.我发现使用COM接口更容易.

获得所需的数据后,可以将其放入类型化的DataSet中.然后,如果您在WPF中使用WinForms或ListBox,则可以将该数据集绑定到DataGridView.如果您只想以XML格式保存数据,可以使用DataSet WriteXml函数将数据存储到文件中.


kis*_*swa 5

为什么不使用填充了您想要更改的数据的DataGridView

完成任何更改后,将DataGridView中的数据保存到您从中开始的Excel文件部分.

您可能还会发现这些 链接 很有用!