Esempio n. 1
0
        private void SelectAndConvertColumns_button_Click(object sender, RibbonControlEventArgs e)
        {
            if (Globals.ThisAddIn.Application.Selection is Excel.Range)
            {
                Excel.Range rng = (Excel.Range)Globals.ThisAddIn.Application.Selection;

                if ((this.From_dropDown.SelectedItemIndex < 1 && rng.Columns.Count == 1) || (this.From_dropDown.SelectedItemIndex > 0 && rng.Columns.Count == 2))
                {
                    // Shift Cells so that nothing is overwritten
                    if (this.To_dropDown.SelectedItemIndex < 1)
                    {
                        ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, Type.Missing);
                    }
                    else
                    {
                        rng.Worksheet.get_Range(((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn, ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 2).EntireColumn).Insert(Excel.XlInsertShiftDirection.xlShiftToRight, Type.Missing);
                    }

                    //ManualResetEvent[] doneEvents = new ManualResetEvent[rng.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row];

                    int lastRow = rng.Worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row;

                    for (int i = 1; i <= rng.Rows.Count && ((Excel.Range)rng.get_Item(i, 1)).Row <= lastRow; i++)
                    {
                        //doneEvents[i - 1] = new ManualResetEvent(false);
                        RowConverter rowConverter = new RowConverter(rng, i, this.From_dropDown.SelectedItem.Label, this.To_dropDown.SelectedItem.Label); //, doneEvents[i - 1]);
                        rowConverter.convertRow();
                        //new Thread(new ThreadStart(rowConverter.convertRow)).Start();
                        //ThreadPool.QueueUserWorkItem(rowConverter.ThreadPoolCallback, i);
                    }

                    //foreach (ManualResetEvent handle in doneEvents)
                    //{
                    //    handle.WaitOne();
                    //}
                    //WaitHandle.WaitAll(doneEvents);

                    // Autofit Cells
                    if (this.To_dropDown.SelectedItemIndex < 1)
                    {
                        ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn.AutoFit();
                    }
                    else
                    {
                        rng.Worksheet.get_Range(((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn, ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 2).EntireColumn).AutoFit();
                    }
                }
                else
                {
                    MessageBox.Show("Invalid Selection!");
                }
            }
            else
            {
                MessageBox.Show("You must select a worksheet range.");
            }
        }
Esempio n. 2
0
        private void SelectAndConvertColumns_button_Click(object sender, RibbonControlEventArgs e)
        {
            if (Globals.ThisAddIn.Application.Selection is Excel.Range)
            {
                Excel.Range rng = (Excel.Range)Globals.ThisAddIn.Application.Selection;

                if ((this.From_dropDown.SelectedItemIndex < 1 && rng.Columns.Count == 1) || (this.From_dropDown.SelectedItemIndex > 0 && rng.Columns.Count == 2))
                {
                    // Shift Cells so that nothing is overwritten
                    if (this.To_dropDown.SelectedItemIndex < 1)
                    {
                        ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn.Insert(Excel.XlInsertShiftDirection.xlShiftToRight, Type.Missing);
                    }
                    else
                    {
                        rng.Worksheet.get_Range(((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn, ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 2).EntireColumn).Insert(Excel.XlInsertShiftDirection.xlShiftToRight, Type.Missing);
                    }

                    //ManualResetEvent[] doneEvents = new ManualResetEvent[rng.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row];

                    int lastRow = rng.Worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing).Row;

                    for (int i = 1; i <= rng.Rows.Count && ((Excel.Range)rng.get_Item(i, 1)).Row <= lastRow; i++)
                    {
                        //doneEvents[i - 1] = new ManualResetEvent(false);
                        RowConverter rowConverter = new RowConverter(rng, i, this.From_dropDown.SelectedItem.Label, this.To_dropDown.SelectedItem.Label); //, doneEvents[i - 1]);
                        rowConverter.convertRow();
                        //new Thread(new ThreadStart(rowConverter.convertRow)).Start();
                        //ThreadPool.QueueUserWorkItem(rowConverter.ThreadPoolCallback, i);
                    }

                    //foreach (ManualResetEvent handle in doneEvents)
                    //{
                    //    handle.WaitOne();
                    //}
                    //WaitHandle.WaitAll(doneEvents);

                    // Autofit Cells
                    if (this.To_dropDown.SelectedItemIndex < 1)
                    {
                        ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn.AutoFit();
                    }
                    else
                    {
                        rng.Worksheet.get_Range(((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 1).EntireColumn, ((Excel.Range)rng.get_Item(1, rng.Columns.Count)).get_Offset(0, 2).EntireColumn).AutoFit();
                    }
                }
                else
                {
                    MessageBox.Show("Invalid Selection!");
                }
            }
            else
            {
                MessageBox.Show("You must select a worksheet range.");
            }
        }