コード例 #1
0
        void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker      = sender as BackgroundWorker;
            DataExportClass  Params      = e.Argument as DataExportClass;
            Font             defaultFont = new Font("宋体", 9f);
            String           Path        = Params.path;

            if (string.IsNullOrEmpty(Path))
            {
                return;
            }

            MyCell fpSpread = new MyCell();

            fpSpread.Watermark = ModuleHelperClient.GetWatermarkByModuleID(moduleID);
            //初始化模板样式
            List <FarPoint.CalcEngine.FunctionInfo> Infos = FunctionItemInfoUtil.getFunctionItemInfos();
            List <JZFormulaData> CrossSheetFormulaInfos   = ModuleHelperClient.GetFormulaByModuleIndex(moduleID);
            Dictionary <Sys_Document, JZDocument> list    = DocumentHelperClient.GetDocumentDataListByModuleIDAndTestRoomCode(moduleID, testRoomCode);

            if (list.Count == 0)
            {
                return;
            }

            Dictionary <Sys_Document, JZDocument> .Enumerator em = list.GetEnumerator();
            int i = 0;

            while (em.MoveNext())
            {
                Sys_Document docBase = em.Current.Key;
                JZDocument   doc     = em.Current.Value;

                if (i == 0)
                {
                    foreach (JZSheet sheet in doc.Sheets)
                    {
                        ProgressScreen.Current.SetStatus = string.Format("正在准备表单{0}...", sheet.Name);
                        String    sheetXML  = ModuleHelperClient.GetSheetXMLByID(sheet.ID);
                        SheetView SheetView = Serializer.LoadObjectXml(typeof(SheetView), sheetXML, "SheetView") as SheetView;
                        SheetView.Tag               = sheet.ID;
                        SheetView.SheetName         = sheet.Name;
                        SheetView.Cells[0, 0].Value = "";
                        SheetView.Protect           = true;
                        fpSpread.Sheets.Add(SheetView);

                        foreach (FarPoint.CalcEngine.FunctionInfo Info in Infos)
                        {
                            SheetView.AddCustomFunction(Info);
                        }
                    }
                    fpSpread.LoadFormulas(true);
                }
                i = i + 1;

                worker.ReportProgress((int)(((float)i / (float)list.Count) * 100));

                foreach (JZSheet sheet in doc.Sheets)
                {
                    SheetView sheetV = null;

                    for (int j = 0; j < fpSpread.Sheets.Count; j++)
                    {
                        if (new Guid(fpSpread.Sheets[j].Tag.ToString()) == sheet.ID)
                        {
                            sheetV = fpSpread.Sheets[j];
                            break;
                        }
                    }
                    if (sheetV == null)
                    {
                        break;
                    }
                    foreach (JZCell dataCell in sheet.Cells)
                    {
                        Cell cell = sheetV.Cells[dataCell.Name];

                        if (cell != null)
                        {
                            cell.Font = defaultFont;
                            if (cell.CellType is ImageCellType)
                            {
                                if (dataCell.Value != null)
                                {
                                    cell.Value = JZCommonHelper.StringToBitmap(dataCell.Value.ToString());
                                }
                            }
                            else
                            {
                                cell.Value = dataCell.Value;
                            }
                        }
                    }
                }
                try
                {
                    //保存资料到指定目录
                    String reportNumber = docBase.BGBH == "" ? "无报告编号" + i.ToString() : docBase.BGBH;

                    ExcelWarningList ewl      = new ExcelWarningList();
                    string           fileName = Path + "\\" + moduleName + "-" + reportNumber + ".xls";
                    fpSpread.SaveExcel(fileName, ExcelSaveFlags.NoFlagsSet, ewl);
                }
                catch
                { }
            }
        }