Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 您可以通过C扫描excel表格中包含信用卡格式数据的列吗#_C#_.net_Excel - Fatal编程技术网

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

C# 您可以通过C扫描excel表格中包含信用卡格式数据的列吗#,c#,.net,excel,C#,.net,Excel,我正在做一个卡号屏蔽程序。我们得到了这些人工创建的excel文档,需要屏蔽一组数字,但并不总是保证D列就是带有卡号的列。可以是D列,也可以是D和G列,等等。我知道这些文档总是至少有10行不计算标题 我想扫描excel工作簿中的工作表,检测哪些列包含数据,然后检查每个非空列的第三个单元格。如果它与至少9位长的数字字符串匹配,则将该列定义为数组中的卡片类型,然后返回并遍历满足该要求的列数组,并屏蔽所需的字符。这在Interops库中的某些C#方法和excel属性之间是否合理可行?是的,可以这样做。有

我正在做一个卡号屏蔽程序。我们得到了这些人工创建的excel文档,需要屏蔽一组数字,但并不总是保证D列就是带有卡号的列。可以是D列,也可以是D和G列,等等。我知道这些文档总是至少有10行不计算标题


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

是的,可以这样做。有几个库,让您可以访问Excel文档,并允许您扫描工作表、行、列和单元格值

有些库基于Interop COM接口Excel,并启动后台Excel进程,以完成提取信息的实际工作

像NPOI(用于xls和xlsx)或openxmlsdk(xlsx)这样的库可以直接访问Excel文件,而无需安装Excel。这对于Office文档的服务器端处理非常有价值。在NPOI中,扫描Excel文件的方式如下所示(只是给您一个想法)

var工作簿=新XSSF工作簿(数据流);
var sheet=workbook.GetSheetAt(0);
var rowEnumerator=sheet.GetRowEnumerator();
while(rowEnumerator.MoveNext())
{
IRow row=(XSSFRow)\u rowEnumerator.Current;
int colCount=row.LastCellNum;
var tableRow=新tableRow(colCount);
for(var c=0;c
是的。虽然使用像LinqToExcel这样的东西可能会更容易-
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))
                 {
                     ...
                 }
            }
        }
}