Ejemplo n.º 1
0
 public ExcelEdit()
 {
     //
     // TODO: 在此处添加构造函数逻辑
     //
     //设置关闭事件
     EventDel_BeforeBookClose =
         new Excel.AppEvents_WorkbookBeforeCloseEventHandler(BeforeBookClose);
     EventDel_SelectionChange = new Excel.DocEvents_SelectionChangeEventHandler(RangeSelected);
     EventDel_CellsChange     = new Excel.DocEvents_ChangeEventHandler(CellsChange);
     foreignKey = new Dictionary <string, string>();
 }
Ejemplo n.º 2
0
        private void EditInExcel(string resourceType)
        {
            if (masterData != null)
            {
                Dictionary <string, int> cellDictionary        = new Dictionary <string, int>();
                Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
                app.Visible       = false;
                app.DisplayAlerts = false;
                try
                {
                    Workbook workbook = null;
                    workbook = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

                    try
                    {
                        this.Cursor = Cursors.WaitCursor;

                        //Create DataArray
                        //===================================================================================================================================================================================
                        int numberOfRows = 2;
                        int numberOfCols = -1;

                        foreach (string rt in masterData.Keys)
                        {
                            if (rt == resourceType)
                            {
                                foreach (string moduleName in masterData[rt].Value.Keys)
                                {
                                    if (Convert.ToBoolean(masterData[rt].Value[moduleName].Key.Attributes["Translate"].Value))
                                    {
                                        foreach (string resourceKey in masterData[rt].Value[moduleName].Value.Keys)
                                        {
                                            int numOfTransKeys = masterData[rt].Value[moduleName].Value[resourceKey].Value.Where(k => Convert.ToBoolean(k.Value.Key.Attributes["Translate"].Value)).Count();

                                            numberOfRows += numOfTransKeys;

                                            //Find number of columns. Only done once
                                            if (numberOfCols == -1)
                                            {
                                                if (numOfTransKeys == masterData[rt].Value[moduleName].Value[resourceKey].Value.Count)
                                                {
                                                    numberOfCols  = masterData[rt].Value[moduleName].Value[resourceKey].Value.First().Value.Value.Count;
                                                    numberOfCols += 5; //Add overhead columns
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        object[,] data = new object[numberOfRows, numberOfCols];



                        //===================================================================================================================================================================================



                        Worksheet sheet = (Worksheet)workbook.Worksheets.get_Item(1);

                        sheet.Activate();
                        sheet.Application.ActiveWindow.SplitRow    = 1;
                        sheet.Application.ActiveWindow.SplitColumn = 6;
                        sheet.Application.ActiveWindow.FreezePanes = true;

                        sheet.Cells[1, 5].EntireColumn.ColumnWidth = 15;

                        sheet.Cells[1, 6].EntireColumn.NumberFormat = "@";
                        sheet.Cells[1, 6].EntireColumn.WrapText     = true;
                        sheet.Cells[1, 6].EntireColumn.ColumnWidth  = 40;

                        data[0, 0] = "ResourceType";
                        data[0, 1] = "Module";
                        data[0, 2] = "ResourceKey";
                        data[0, 3] = "Key";
                        data[0, 4] = "Updated";
                        data[0, 5] = "text";

                        //sheet.Cells[1, 1] = "ResourceType";
                        //sheet.Cells[1, 2] = "Module";
                        //sheet.Cells[1, 3] = "ResourceKey";
                        //sheet.Cells[1, 4] = "Key";
                        //sheet.Cells[1, 5] = "Updated";
                        //sheet.Cells[1, 6] = "text";

                        int colIndex = 7;
                        Dictionary <string, int> translationDictionary = new Dictionary <string, int>();
                        foreach (string cultureName in Localizer.GetSupportedTranslationsCultureNames(resourceType))
                        {
                            sheet.Cells[1, colIndex].EntireColumn.ColumnWidth  = 40;
                            sheet.Cells[1, colIndex].EntireColumn.NumberFormat = "@";
                            //sheet.Cells[1, colIndex] = cultureName;
                            data[0, colIndex - 1] = cultureName;

                            translationDictionary.Add(cultureName, colIndex - 1);

                            colIndex++;
                        }

                        sheet.Cells.Locked = false;
                        sheet.Range["1:1"].EntireRow.Locked    = true;
                        sheet.Range["1:1"].EntireRow.Font.Bold = true;



                        //int insertIndex = Math.Max(sheet.UsedRange.Rows.Count, 1);
                        int insertIndex = 1;


                        foreach (string rt in masterData.Keys)
                        {
                            if (rt == resourceType)
                            {
                                foreach (string moduleName in masterData[rt].Value.Keys)
                                {
                                    if (Convert.ToBoolean(masterData[rt].Value[moduleName].Key.Attributes["Translate"].Value))
                                    {
                                        foreach (string resourceKey in masterData[rt].Value[moduleName].Value.Keys)
                                        {
                                            foreach (string key in masterData[rt].Value[moduleName].Value[resourceKey].Value.Keys)
                                            {
                                                if (Convert.ToBoolean(masterData[rt].Value[moduleName].Value[resourceKey].Value[key].Key.Attributes["Translate"].Value))
                                                {
                                                    string updated = masterData[rt].Value[moduleName].Value[resourceKey].Value[key].Key.Attributes["Updated"].Value;

                                                    data[insertIndex, 0] = rt;
                                                    data[insertIndex, 1] = moduleName;
                                                    data[insertIndex, 2] = resourceKey;
                                                    data[insertIndex, 3] = key;
                                                    data[insertIndex, 4] = updated;


                                                    //sheet.Cells[insertIndex, 1] = rt;
                                                    //sheet.Cells[insertIndex, 2] = moduleName;
                                                    //sheet.Cells[insertIndex, 3] = resourceKey;
                                                    //sheet.Cells[insertIndex, 4] = key;
                                                    //sheet.Cells[insertIndex, 5] = updated;

                                                    foreach (KeyValuePair <string, XmlNode> translation in masterData[rt].Value[moduleName].Value[resourceKey].Value[key].Value)
                                                    {
                                                        if (translation.Key == Localizer.GetDefaultCultureName(rt))
                                                        {
                                                            //sheet.Cells[insertIndex, 6] = translation.Value.InnerText;
                                                            data[insertIndex, 5] = translation.Value.InnerText;
                                                        }
                                                        else
                                                        {
                                                            //sheet.Cells[insertIndex, translationDictionary[translation.Key]] = translation.Value.InnerText;
                                                            data[insertIndex, translationDictionary[translation.Key]] = translation.Value.InnerText;
                                                        }
                                                    }

                                                    insertIndex++;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Range startCell  = (Range)sheet.Cells[1, 1];
                        Range endCell    = (Range)sheet.Cells[numberOfRows, numberOfCols];
                        Range writeRange = sheet.Range[startCell, endCell];

                        writeRange.Value2 = data;

                        //string tmpFileName = "TranslationWorkSheet_" + Guid.NewGuid().ToString() + ".xlsx";
                        //string tmpFilePath = (Path.Combine(System.Windows.Forms.Application.ExecutablePath, tmpFileName));

                        //workbook.SaveAs(tmpFilePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

                        excelIsClosed = false;

                        Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeCloseEventHandler Event_BeforeBookClose;

                        Event_BeforeBookClose    = new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeCloseEventHandler(app_WorkbookBeforeClose);
                        app.WorkbookBeforeClose += Event_BeforeBookClose;

                        app.Visible = true;

                        //Wait until excel is closed
                        while (!excelIsClosed)
                        {
                            System.Threading.Thread.Sleep(1000);
                        }

                        if (excelData != null)
                        {
                            UpdateMasterFromExcelData(excelData);
                        }

                        this.Cursor = Cursors.Default;

                        Marshal.FinalReleaseComObject(sheet);
                        sheet = null;
                    }
                    finally
                    {
                        Marshal.FinalReleaseComObject(workbook);
                        workbook = null;
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    Marshal.FinalReleaseComObject(app);
                    app = null;
                    GC.Collect();
                }
            }
        }
Ejemplo n.º 3
0
 protected override void OnAfterLoad()
 {
     closeWorkbookEvent = WorkbookClosed;
 }
Ejemplo n.º 4
0
        public CodeExtractor()
        {
            InitializeComponent();

            localAppPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            IniProfile ini = new IniProfile(string.Format("{0}testIni.ini", localAppPath));
            ini.IniWriteValue("Password", "ABC", "123456");
            ini.IniWriteValue("Password", "ABCapp@micronium", "B?[L0gTgV");

            //ini.Write("cfoapp@soltimum", "BfWLK?[0gTgc");

            ListeSourceCodeMenuItem.Enabled = false;
            ExportSourceCodesMenuItem.Enabled = false;
            closeSourceMenuItem.Enabled = false;
            saveCodesSourceMenuItem.Enabled = false;

            ListDestinationCodeMenuItem.Enabled = false;
            ExportDestinationCodesMenuItem.Enabled = false;
            closeDestinationMenuItem.Enabled = false;
            SaveCodesDestinationMenuItem.Enabled = false;

            ExcelApp = new Excel.Application() { Visible = false, DisplayAlerts = false, EnableEvents = false };

            //xlApp = new Microsoft.Office.Interop.Excel.Application();
            ExcelApp.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(app_WorkbookOpen);
            ExcelApp.WorkbookActivate += new Excel.AppEvents_WorkbookActivateEventHandler(app_WorkbookActivate);

            //Add an event handler for the WorkbookBeforeClose Event of the
            //Application object.
            EventDel_BeforeBookClose = new Excel.AppEvents_WorkbookBeforeCloseEventHandler(BeforeBookClose);
            ExcelApp.WorkbookBeforeClose += EventDel_BeforeBookClose;

            //Add an event handler for the Change event of both worksheet objects.
            //EventDel_CellsChange = new Excel.DocEvents_ChangeEventHandler(CellsChange);

            //xlSheet1.Change += EventDel_CellsChange;
            //xlSheet2.Change += EventDel_CellsChange;
            //xlSheet3.Change += EventDel_CellsChange;

            //Make Excel visible and give the user control.
            //ExcelApp.Visible = true;
            ExcelApp.UserControl = true;
        }