我正在使用 .NET C# 开发 Windows 应用程序。我必须用其他一些文本(我从数据库中获取)替换 Excel 单元格内容。我需要做的是用数据库中的实际值替换 Excel 的值。(例如,“CustomerName”将被“John”替换,“CustomerCompanyName”将被“GE”替换等)。此外,如果某些值不存在,则该空白空间将与其以下值重叠。
我们如何实现这个东西?
这取决于。
如果这些只是工作表中的静态值,并且您不希望在更新它们时在 excel 中执行计算,那么只需使用OpenXml 来编辑电子表格。
否则,您将不得不使用 Office Interopt 或一些第三方 excel 库。
如果您想使用 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();
我正在使用来自http://www.tmssoftware.net/(无从属关系)的 FlexCel,它很棒。价格合理,速度快,所有托管代码和开发人员似乎知道他在说什么,并且对查询也非常敏感。
1000% 比 Office 互操作库恕我直言。
过去,我通过互操作库访问 Excel,对于服务器,我使用了 ODBC/OLE-DB 驱动程序,但总是遇到困难。