コード例 #1
0
        public void getLineChart()
        {
            ExcelScatterChart lineChart = sheet1.Drawings["Chart1"] as ExcelScatterChart;
            var serie11 = lineChart.Series[0];
            var serie22 = lineChart.Series[1];

            serie11.Series  = sheet1.Cells[2, 2, 1024, 2].FullAddress;
            serie11.XSeries = sheet1.Cells[2, 1, 1024, 1].FullAddress;
            serie11.Header  = "YDec";

            serie22.Series  = sheet1.Cells[2, 3, 1024, 3].FullAddress;
            serie22.XSeries = sheet1.Cells[2, 1, 1024, 1].FullAddress;
            serie22.DataLabel.ShowLeaderLines = true;
            serie22.Header             = "MAX";
            serie22.DataLabel.Position = eLabelPosition.Left;

            /*
             * lineChart.Series.Delete(0);
             * lineChart.Series.Delete(0);
             *
             * var serie1 = lineChart.Series.Add(sheet1.Cells[2,2,1024,2], sheet1.Cells[2,1,1024,1]);
             * serie1.Header = "YDec";
             * serie1.DataLabel.ShowValue = false;
             *
             * var serie2 = lineChart.Series.Add(sheet1.Cells[2, 3, 1024, 3], sheet1.Cells[2, 1, 1024, 1]);
             * serie2.Header = "MAX";
             * serie2.DataLabel.Position = eLabelPosition.Left;
             * serie2.DataLabel.ShowValue = true;
             * serie2.DataLabel.ShowLeaderLines = true;
             *
             * //serie2.DataLabel.ShowLeaderLines
             * lineChart.SetPosition(2, 2, 6, 0);
             * lineChart.SetSize(600, 400);
             */
        }
コード例 #2
0
        public ExcelObject(ExcelObject template, string path, string name)
        {
            const string extension    = ".xlsx";
            string       originalPath = template.path_;
            string       resPath      = path + "\\" + name + extension;

            // Looking for an available name if a template equals a resulting file
            if (Path.GetFileNameWithoutExtension(originalPath).Equals(name))
            {
                bool isAvailable = false;
                while (!isAvailable)
                {
                    name       += "-copy";
                    resPath     = path + "\\" + name + extension;
                    isAvailable = !(new FileInfo(name).Exists);
                }
            }
            // Try creating an Excel instance
            createExcelInstance(originalPath, resPath, name, extension);
            Copy(new ExcelObject(resPath));
            // Delete the data worksheet if existed
            ExcelWorkbook book = package_.Workbook;

            foreach (ExcelWorksheet sheet in book.Worksheets)
            {
                if (sheet.Name.Equals(workSheetName_))
                {
                    book.Worksheets.Delete(workSheetName_);
                    break;
                }
            }
            // Add a new one
            workSheet_ = book.Worksheets.Add(workSheetName_);
            posCharts_ = new Dictionary <ExcelDrawing, ChartPosition>();
            path_      = resPath;
            // Clear all the series
            foreach (ExcelDrawing objChart in charts_)
            {
                ExcelScatterChart chart = (ExcelScatterChart)objChart;
                while (chart.Series.Count > 0)
                {
                    chart.Series.Delete(0);
                }
            }
        }
コード例 #3
0
        public void addSeries(string chartName, double[,] data, string dataName, string infoChart = "", string infoData = "")
        {
            // Finding the chart
            ExcelDrawing objChart = null;
            int          nCharts  = charts_.Count;

            for (int i = 0; i != nCharts; ++i)
            {
                ExcelDrawing chart = charts_[i];
                if (chart.Name == chartName)
                {
                    objChart   = chart;
                    lastSheet_ = chartSheets_[i];
                    break;
                }
            }
            if (objChart == null)
            {
                return;
            }
            // Check if the chart is currently in use
            ChartPosition pos;
            int           iRow, jCol;

            if (!posCharts_.ContainsKey(objChart))
            {
                pos = new ChartPosition()
                {
                    header = new Position {
                        row = ChartPosition.lastRow + 1, col = 1
                    },
                    length            = data.GetLength(0),
                    availablePosition = new Position {
                        row = ChartPosition.lastRow + 3, col = 1
                    }
                };
                // Write the header
                workSheet_.Cells[pos.header.row, pos.header.col].Value = objChart.Name + infoChart;
                posCharts_.Add(objChart, pos);
                ChartPosition.lastRow += pos.length + 3;
            }
            else
            {
                pos = posCharts_[objChart];
            }
            // Add the function values
            iRow = pos.availablePosition.row;
            jCol = pos.availablePosition.col;
            int nData = data.GetLength(0);

            for (int k = 0; k != nData; ++k)
            {
                workSheet_.Cells[iRow + k, jCol].Value     = data[k, 0];
                workSheet_.Cells[iRow + k, jCol + 1].Value = data[k, 1];
            }
            workSheet_.Cells[pos.header.row + 1, jCol].Value     = infoData; // Set the data info
            workSheet_.Cells[pos.header.row + 1, jCol + 1].Value = dataName; // Set the name
            // Retrieving the data address
            ExcelScatterChart scatterChart = (ExcelScatterChart)objChart;
            string            xVals        = ExcelRange.GetAddress(iRow, jCol,
                                                                   iRow + nData - 1, jCol);
            string yVals = ExcelRange.GetAddress(iRow, jCol + 1,
                                                 iRow + nData - 1, jCol + 1);

            xVals = ExcelRange.GetFullAddress(workSheetName_, xVals);
            yVals = ExcelRange.GetFullAddress(workSheetName_, yVals);
            // Creating the serie
            ExcelScatterChartSerie serie = scatterChart.Series.Add(yVals, xVals);
            // Using the standard markers when custom ones are not available
            List <MarkerProperty> markers = customMarkers_[chartName];

            if (markers == null || markers.Count == 0)
            {
                markers = standardMarkers_;
            }
            MarkerProperty markerProperties = markers[indMarkers_[chartName]];
            // Using the standard lines when custom ones are not available
            List <LineProperty> lines = customLines_[chartName];

            if (lines == null || lines.Count == 0)
            {
                lines = standardLines_;
            }
            LineProperty lineProperties = lines[indLines_[chartName]];
            int          transparency   = lineProperties.isTransparent ? 100 : 0; // Perecentage

            // Specifying the properties
            serie.Border.Fill.Color        = Color.Black;              // Line color
            serie.Border.LineStyle         = lineProperties.lineStyle; // Line style
            serie.Border.Fill.Transparancy = transparency;             // Line transparency
            serie.Border.Width             = 1.0;                      // Line width
            if (serie.Marker != null)
            {
                serie.Marker.Border.Fill.Color = Color.Black;   // Marker border color
                serie.Marker.Border.Width      = 0.75;          // Marker border width
                serie.Marker.Size = 5;                          // Marker size
                // Marker fill color
                if (markerProperties.fillColor != Color.Transparent)
                {
                    serie.Marker.Fill.Color = markerProperties.fillColor;
                }
                else
                {
                    serie.Marker.Fill.Style = eFillStyle.NoFill;
                }
                // Marker style
                if (lineProperties.isMarkersEnabled)
                {
                    serie.Marker.Style = markerProperties.style;
                }
                else
                {
                    serie.Marker.Style = eMarkerStyle.None;
                }
                // Increment markers and lines indices
                ++indMarkers_[chartName];
                if (indMarkers_[chartName] >= markers.Count)
                {
                    indMarkers_[chartName] = 0;
                }
            }
            ++indLines_[chartName];
            if (indLines_[chartName] >= lines.Count)
            {
                indLines_[chartName] = 0;
            }
            // Legend
            serie.Header = dataName;
            // Shifting data locations
            pos.availablePosition.col = pos.availablePosition.col + 2;
            pos.length = Math.Max(pos.length, nData);
            int lastRowColumn = pos.availablePosition.row + pos.length;

            if (lastRowColumn > ChartPosition.lastRow)
            {
                ChartPosition.lastRow = lastRowColumn;
            }
        }