您可以通过C#扫描excel表格中包含信用卡格式数据的列吗?

时间:2016-12-06 18:28:34

标签: c# .net excel

我正在进行卡号屏蔽过程。我们在这里创建了这些人工创建的excel文档,并且需要屏蔽一组数字,但并不总能保证D列将成为带有卡号的列。可能只是D列,或D和G等。我知道这些文件总是至少有10行不计算标题。

我想在excel工作簿中运行工作表扫描并检测哪些列有数据,然后检查每个非空列的第3个单元格。如果它匹配长度至少为9位的数字字符串,则将该列定义为数组中的卡类型,然后返回并遍历满足该要求的列数组并屏蔽所需的字符。 Interops库中的某些C#方法和excel属性之间是否合理可行?

1 个答案:

答案 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))
                 {
                     ...
                 }
            }
        }
}