Abu Aamir Ahmad Ответов: 2

Как дать в ячейках столбца компании цвет, если название компании wipro, то желтый или красный...помогите


Я создаю Datatable в C# и экспортирую его в excel sheet...Как сделать колонки в компании цвет ячеек с помощью петель, если название компании-Компания Wipro то желтый то красный.Помогите!

Что я уже пробовал:

namespace Datatable2Excel
{
    public partial class Form1 : Form
    {
        DataTable ctr_raw_table = new DataTable();
        public Form1()
        {
            
            InitializeComponent();
            
            ctr_raw_table.Columns.Add("Name", typeof(String));
            ctr_raw_table.Columns.Add("Company", typeof(String));
            ctr_raw_table.Columns.Add("Job", typeof(String));
            ctr_raw_table.Columns.Add("Level", typeof(String));
            ctr_raw_table.Columns.Add("ID", typeof(String));
            ctr_raw_table.Columns.Add("Address", typeof(String));
            string[] row = new string[] { "John", "Wipro", "Engineer", "0203794", "India", "Mumbai" };
            ctr_raw_table.Rows.Add(row);
            row = new string[] { "David", "TCS", "Engineer", "02065394", "India", "Thane" };
            ctr_raw_table.Rows.Add(row);
            row = new string[] { "Albert", "Infosys", "Engineer", "0206394", "India", "Mumbai" };
            ctr_raw_table.Rows.Add(row);
            row = new string[] { "Daniel", "IBM", "Engineer", "02036594", "India", "Mumbra" };
            ctr_raw_table.Rows.Add(row);
            row = new string[] { "James", "Accenture", "Engineer", "02560394", "India", "Bhiwandi" };
            ctr_raw_table.Rows.Add(row);
            row = new string[] { "Jacob", "L&T", "Engineer", "02036594", "India", "kalyan" };
            ctr_raw_table.Rows.Add(row);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Export_Ctr_Excel(ctr_raw_table, "Output");
        }
        private void Export_Ctr_Excel(DataTable tablelist, string excelFilename)
        {

            Microsoft.Office.Interop.Excel.Application objexcelapp = new Microsoft.Office.Interop.Excel.Application();
            objexcelapp.Application.Workbooks.Add(Type.Missing);
            objexcelapp.Columns.AutoFit();
            for (int i = 1; i < tablelist.Columns.Count + 1; i++)
            {
                Microsoft.Office.Interop.Excel.Range xlRange = (Microsoft.Office.Interop.Excel.Range)objexcelapp.Cells[1, i];
                xlRange.Font.Bold = -1;

                
                int Row = 1;
                int Column = 1;  

                Microsoft.Office.Interop.Excel.Range rng = (Microsoft.Office.Interop.Excel.Range)objexcelapp.Cells[Row, Column];
                rng.EntireColumn.Font.Bold = true;
                rng.EntireColumn.Font.Italic = true;
                rng.EntireColumn.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.HotPink);
                rng.EntireColumn.BorderAround();

                xlRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;

                xlRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;

                objexcelapp.Cells[1, i] = tablelist.Columns[i - 1].ColumnName;

                DataTable dt = tablelist.Columns[i];
                if  (DataColumnCollection.tablelist.Column.Company = "Wipro")

                {
                    Console.WriteLine(System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Yellow));
                }
                else
                {
                    Console.WriteLine(System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red));
                }

            }
            for (int i = 0; i < tablelist.Rows.Count; i++)
            {
                for (int j = 0; j < tablelist.Columns.Count; j++)
                {
                    if (tablelist.Rows[i][j] != null)
                    {
                        Microsoft.Office.Interop.Excel.Range xlRange = (Microsoft.Office.Interop.Excel.Range)objexcelapp.Cells[i + 2, j + 1];

                        xlRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;

                        xlRange.Borders.Weight = 1d;
                        xlRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                        objexcelapp.Cells[i + 2, j + 1] = tablelist.Rows[i][j].ToString();
                    }
                }
            }
            objexcelapp.Columns.AutoFit();
            System.Windows.Forms.Application.DoEvents();
            if (Directory.Exists("C:\\CTR_Data\\"))
            {
                objexcelapp.ActiveWorkbook.SaveCopyAs("C:\\CTR_Data\\" + excelFilename + ".xlsx");
            }
            else
            {
                Directory.CreateDirectory("C:\\CTR_Data\\");
                objexcelapp.ActiveWorkbook.SaveCopyAs("C:\\CTR_Data\\" + excelFilename + ".xlsx");
            }
            objexcelapp.ActiveWorkbook.Saved = true;
            System.Windows.Forms.Application.DoEvents();
            foreach (Process proc in System.Diagnostics.Process.GetProcessesByName("EXCEL"))
            {
                proc.Kill();
            }
        }

        private object Worksheets(string v)
        {
            throw new NotImplementedException();

        }
    }
}

2 Ответов

Рейтинг:
0

Gerry Schmitz

Использовать формулы, Условное форматирование

Использовать формулы, Условное форматирование в Excel[^]


Abu Aamir Ahmad

Большое вам спасибо за то, что вы дали мне ответ, но я хочу сделать это в своем кодировании C# с помощью циклов: If_else, не могли бы вы посмотреть мое кодирование и сказать, что я могу сделать? Благодарный вам

Рейтинг:
0

Patrice T

Цитата:
Как дать в ячейках столбца компании цвет, если название компании wipro, то желтый или красный...помогите

Предполагаю, что вы знаете, как это сделать в Excel, но не с помощью interop.
Попросите Excel показать вам, как ваши действия переводятся в код.
Запишите макрос с вашими действиями (измените цвет ячейки), затем перейдите в Редактор VBE (Alt+F11) и посмотрите на код макроса, это в основном то, что вы должны сказать Interop с небольшой адаптацией.
[Обновление]
Цитата:
я хочу изменить цвет ячейки, используя циклы в c#, а не на листе excel...я хочу, чтобы когда я буду экспортировать свою таблицу данных в excel, это уже произойдет

Этот взгляд очень смущает.
Насколько я могу видеть, Datatable не является компонентом графического интерфейса, и поэтому ячейки DataTable не имеют цветов. Но в ячейках Excel есть цвета.


Abu Aamir Ahmad

Большое вам спасибо за то, что вы дали мне ответ, но я хочу сделать это в своем кодировании C# с помощью циклов: If_else, не могли бы вы посмотреть мое кодирование и сказать, что я могу сделать? Благодарный вам

Patrice T

В чем твоя проблема ?
делать петлю ? или изменение цвета клеток ?

Abu Aamir Ahmad

я хочу изменить цвет ячейки, используя циклы в c#, а не на листе excel...я хочу, чтобы когда я буду экспортировать свою таблицу данных в excel, это уже произойдет

Abu Aamir Ahmad

не могли бы вы, пожалуйста, исправить мой этот код?...

DataTable dt = tablelist.Столбцы[i];
если (DataColumnCollection.tablelist.Колонка.Компания = ""Уипро"")

{
Приставка.WriteLine(Система.Рисование.ColorTranslator.Тул(Система.Рисование.Цвет.Желтый));
}
еще
{
Приставка.WriteLine(Система.Рисование.ColorTranslator.Тул(Система.Рисование.Цвет.Красный));
}

Patrice T

Извини, что я этим не пользуюсь.
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Abu Aamir Ahmad

хорошо ... большое вам спасибо