2012-03-29 8 views
0

C#を使用して特定のキーワードのExcelドキュメントを解析し、その出現回数をカウントする必要があります。これらのキーワードは、一定の範囲内で検索する必要がありますが、固定されていません。ExcelドキュメントでC#を使用してキーワードを解析する

お願いします。

ありがとうございます!

+3

何を試しましたか? Excel(ODBC、Interop、Office Open XML)にどのようにアクセスしていますか? – Jetti

+0

私はInteropを使用しています。 Microsoft.Office.Interop.Excel – user1300574

+0

そして何か試しましたか? – Jetti

答えて

0

あなたはその後、以下のソースコードは、Excelのsfilenameのための最初の行に検索しますあなたのC#コードでMicrosoft.Office.Interop.Excelを使用する必要がありますが、この(私のような何かをしようとするファイル名

int countOccurence = 0; 

public bool SearchRows(string valTosearch) 
    { 
     Excel.Application xlApp = new Excel.Application(); 
     xlApp.ScreenUpdating = false; 
     try 
     { 
      xlApp.DisplayAlerts = false; 

      vk_filename = SFileName; 

      //Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(SFileName); 

      Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(
      SFileName, vk_update_links, vk_read_only, 
      vk_format, vk_password, 
      vk_write_res_password, 
      vk_ignore_read_only_recommend, vk_origin, 
      vk_delimiter, vk_editable, vk_notify, 
      vk_converter, vk_add_to_mru, 
      vk_local, vk_corrupt_load); 
      Excel._Worksheet xlWorksheet = (Excel._Worksheet)xlWorkbook.Sheets[1]; 
      Excel.Range xlRange = xlWorksheet.UsedRange; 
      int rowCount = xlRange.Rows.Count; 
      int colCount = xlRange.Columns.Count; 

      // loop trough cell range and excel rows below will search in 1st row 
      Excel.Worksheet worksheet = xlRange.Worksheet; 
      for (int iCount = 1; iCount <= colCount; iCount++) 
      { 

       string cellValue = ""; 
       string fldValue = ""; 

       Microsoft.Office.Interop.Excel.Range fldRange = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[1, iCount]; 

       if (fldRange.Value2 != null) 
       { 
        fldValue = fldRange.Value2.ToString().Trim().ToLower(); 
       } 
       else 
       { 
        fldValue = null; 
       } 
       Microsoft.Office.Interop.Excel.Range CellRange = (Microsoft.Office.Interop.Excel.Range)worksheet.Cells[2, iCount]; 
       if (CellRange.Value2 != null) 
       { 
        cellValue = CellRange.Value2.ToString().Trim().ToLower(); 
        if (cellvalue == valtosearch) 
        { 
         countOccurence +=1; 
        }      
       } 
       else 
       { 
        cellValue = null; 
       } 

      } 

      xlWorkbook.Close(vk_save_changes, vk_filename, vk_route_workbook); 
      //xlWorkbook.Save(); 
      xlApp.Quit(); 
      return true; 
     } 
     catch 
     { 
      xlApp.Quit(); 
      return false; 
     } 
    } 
0

ですExcel Interopを使用しています):

using Excel = Microsoft.Office.Interop.Excel; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Excel.Application app = new Excel.Application(); 
      Excel.Workbook wk = app.Workbooks.Open(@"D:\testExcel.xlsx"); 
      Excel.Worksheet sh = (Excel.Worksheet)wk.ActiveSheet; 

      Excel.Range rng = sh.get_Range("A1", "Z20"); 
      Console.WriteLine(CountWord(rng, "a")); 

      wk.Close(false); 
      app.Quit(); 

      Console.ReadLine(); 
     } 

     private static int CountWord(Excel.Range rng, string word) 
     { 
      int i = 0; 

      Excel.Range rng1 = rng.Find(word); 

      if (rng1 != null) 
       i++; 
      else 
       return 0; 

      string address = rng1.Address; 

      Console.WriteLine(address); 

      while (true) 
      { 
       rng1 = rng.FindNext(rng1); 

       if (rng1 == null) 
        return i; 

       Console.WriteLine(rng1.Address); 

       if (rng1.Address == address) 
        return i; 
       else 
        i++;    
      } 
     } 
    } 
} 
関連する問題