我正在进行卡号屏蔽过程。我们在这里创建了这些人工创建的excel文档,并且需要屏蔽一组数字,但并不总能保证D列将成为带有卡号的列。可能只是D列,或D和G等。我知道这些文件总是至少有10行不计算标题。
我想在excel工作簿中运行工作表扫描并检测哪些列有数据,然后检查每个非空列的第3个单元格。如果它匹配长度至少为9位的数字字符串,则将该列定义为数组中的卡类型,然后返回并遍历满足该要求的列数组并屏蔽所需的字符。 Interops库中的某些C#方法和excel属性之间是否合理可行?
答案 0 :(得分:2)
是的,有可能这样做。有几个库,可以访问Excel文档,让您扫描工作表,行,列和单元格值。
有些库基于Interop COM接口Excel并启动后台Excel进程,可以完成提取信息的实际工作。
NPOI(适用于xls和xlsx)或Open XML SDK(xlsx)等库可以直接访问Excel文件,而无需安装Excel。这对于Office文档的服务器端处理极为重要。在NPOI中,扫描Excel文件看起来像这样(只是为了给你一个想法)。
var workbook = new XSSFWorkbook(dataStream);
var sheet = workbook.GetSheetAt(0);
var rowEnumerator = sheet.GetRowEnumerator();
while (rowEnumerator.MoveNext())
{
IRow row = (XSSFRow)_rowEnumerator.Current;
int colCount = row.LastCellNum;
var tableRow = new TableRow(colCount);
for (var c = 0; c < colCount; c++)
{
var cell = row.GetCell(c);
if (cell != null)
{
if (IsCreditCardNumber(c))
{
...
}
}
}
}