0

我正在使用 .NET C# 开发 Windows 应用程序。我必须用其他一些文本(我从数据库中获取)替换 Excel 单元格内容。我需要做的是用数据库中的实际值替换 Excel 的值。(例如,“CustomerName”将被“John”替换,“CustomerCompanyName”将被“GE”替换等)。此外,如果某些值不存在,则该空白空间将与其以下值重叠。

我们如何实现这个东西?

4

3 回答 3

0

这取决于。

如果这些只是工作表中的静态值,并且您不希望在更新它们时在 excel 中执行计算,那么只需使用OpenXml 来编辑电子表格。

否则,您将不得不使用 Office Interopt 或一些第三方 excel 库。

于 2012-10-16T14:35:30.513 回答
0

如果您想使用 OpenXml,您将在此处了解如何读取 Excel 文档中单元格的值,以及如何在单元格中写入值。

您可以使用的另一个免费库是NPOI。这些说明让您初步了解如何读取/写入单元格的数据并保存修改后的文件:

        FileStream aFile = new FileStream(@"c:\tmp\foo.xls", FileMode.Open, FileAccess.Read);
        HSSFWorkbook wb = new HSSFWorkbook(aFile);
        aFile.Close();
        ISheet ws = wb.GetSheet("Worksheet1");

        IRow aRow = curSheet.GetRow(aRowIdx);
        if (aRow == null)
            aRow = curSheet.CreateRow(aRowIdx);
        ICell aCell = aRow.GetCell(aColIdx);
        if (aCell == null)
            aCell = aRow.CreateCell(aColIdx);
        string sValue = aCell.StringCellValue; // here the value is read
        sValue = sValue + " MODIFIED";
        aCell.SetCellValue(sValue); // here it is written
        aFile = new FileStream(@"c:\tmp\bar.xls", FileMode.Create);
        wb.Write(aFile);
        aFile.Close();
于 2012-10-17T06:31:37.113 回答
0

我正在使用来自http://www.tmssoftware.net/(无从属关系)的 FlexCel,它很棒。价格合理,速度快,所有托管代码和开发人员似乎知道他在说什么,并且对查询也非常敏感。

1000% 比 Office 互操作库恕我直言。

过去,我通过互操作库访问 Excel,对于服务器,我使用了 ODBC/OLE-DB 驱动程序,但总是遇到困难。

于 2012-10-16T14:45:02.670 回答