2016-12-06 25 views
1

我正在處理卡號掩碼過程。我們得到這些人類創建的Excel文檔,並且需要屏蔽一組數字,但不能保證列D將成爲具有卡號的列。可能僅列D,或D和G等。我知道這些文檔將始終有至少10行不計算標題。您可以通過C#掃描excel表格中是否有信用卡格式數據的列表

我想運行Excel工作簿中工作表的掃描,並檢測哪些列有數據,然後檢查每個非空列的第3個單元格。如果它匹配至少9位數字的數字字符串,則將該列定義爲數組中的卡片類型,然後返回並遍歷滿足該要求的列數組並遮罩所需的字符。這在Interops庫中的一些C#方法和excel屬性之間是合理可行的嗎?

+1

是的。雖然使用像LinqToExcel這樣的東西可能會更容易 - https://github.com/paulyoder/LinqToExcel – Asnivor

回答

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)) 
       { 
        ... 
       } 
      } 
     } 
} 
相關問題