Получить конкретный текст в диапазоне ячеек Excel, используя C # - PullRequest
1 голос
/ 08 ноября 2011

Я работаю в приложении WPF с Excel. В этом приложении у меня есть имя столбца как Bulk. Этот столбец содержит две опции, такие как YES и NO как текст. Теперь мне нужно указать шрифт как красный цвет для опции YES и обычный черный цвет для опции NO. Я получил диапазон этой конкретной колонки. Но я не знаю, как мне раздельно получить параметры ДА и НЕТ, а также мне нужно покрасить эти параметры в соответствии с необходимостью.

Здесь я упомянул мой код:

foreach(Range Value in range.cells)
{

???????
???????
}

Любой, пожалуйста скажите мне решение этого. Как мне продолжить этот процесс. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Попробуйте это

string strFileName = "D:\\test1.xlsx";
Microsoft.Office.Interop.Excel.Application ExcelObj = null;
ExcelObj = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook theWorkbook = ExcelObj.Workbooks.Open(strFileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Microsoft.Office.Interop.Excel.Sheets sheets = theWorkbook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);
Microsoft.Office.Interop.Excel.Range range = worksheet.get_Range("A11", "G21"); // Your requied range here

foreach (Microsoft.Office.Interop.Excel.Range cell in range.Cells)
{
   if(cell.TextToString()=="Yes")
    {
    }
   if(cell.TextToString()=="No")
    {
    }

}

Для получения дополнительной информации проверьте здесь

http://msdn.microsoft.com/en-us/library/4zs9xy29(v=vs.80).aspx

1 голос
/ 08 ноября 2011

Добавьте этот класс в свой проект, измените пространство имен на свое и начните использовать его для создания того, что вы хотите в настройках окраски

Что касается вашего обнаружения ДА / НЕТ, вы можете сделать следующее:

        Microsoft.Office.Interop.Excel.Range range = myworksheet.UsedRange;
        //Start iterating from 1 not zero, 1 is the first row after notation of the current coloumn
        for (int i = 1; i <= range.Rows.Count; i++)
        {
            Microsoft.Office.Interop.Excel.Range myrange = myworksheet.get_Range(/*your column letter, ex: "A" or "B"*/ + i.ToString(), System.Reflection.Missing.Value);
            string temp = myrange.Text;
            if(temp.Contains("YES"))
            {
                //Do your YES logic
            }
            else if(temp.Contains("NO"))
            {
                //Do your No Logic
            }
        }
0 голосов
/ 08 ноября 2011

Что касается проверки значения на ячейках, вы можете использовать класс, предложенный Шерифом Махаром. Когда я использую VBA для поиска ячеек Excel, я использую нечто, похожее на это

'VB скрипт, хотя.

if (Range("A1").Value = "DesiredString") Then Code End If

Я почти уверен, что для объектов ячеек есть метод get значения на C #, а для цветов, я думаю, что

YourRange.Font.Color = System.Drawing.Color.Black.ToArgb();

будет работать ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...