/// <summary> /// Перенести область графиков /// </summary> /// <param name="chartPart">Область графиков для перемещения</param> /// <param name="cellAddress">Позиция области графиков (ячейка, левый верхний край области)</param> /// <param name="columnOffset">Отклонение от левого края ячейки</param> /// <param name="rowOffset">Отклонение от верхнего края ячейки</param> /// <returns>true - если операция выполнилась успешно, false - в обратном случае.</returns> public static bool RelocateTo(this ChartPart chartPart, string cellAddress, long columnOffset = 0, long rowOffset = 0) { var columnNum = Utils.ToColumNum(cellAddress); var rowNum = Utils.ToRowNum(cellAddress); return(chartPart.RelocateTo((int)columnNum, (int)rowNum, columnOffset, rowOffset)); }
//fix the chart Data Regions public static void FixChartData(WorkbookPart workbookPart, int totalCount) { var wsparts = workbookPart.WorksheetParts.ToArray(); foreach (WorksheetPart wsp in wsparts) { if (wsp.DrawingsPart != null) { ChartPart chartPart = wsp.DrawingsPart.ChartParts.First(); ////change the ranges to accomodate the newly inserted data. foreach (DocumentFormat.OpenXml.Drawing.Charts.Formula formula in chartPart.ChartSpace.Descendants <DocumentFormat.OpenXml.Drawing.Charts.Formula>()) { if (formula.Text.Contains("$2")) { string s = formula.Text.Split('$')[1]; formula.Text += ":$" + s + "$" + totalCount; } } chartPart.ChartSpace.Save(); } } //ChartPart chartPart = workbookPart.ChartsheetParts.First().DrawingsPart.ChartParts.First(); ////change the ranges to accomodate the newly inserted data. //foreach (DocumentFormat.OpenXml.Drawing.Charts.Formula formula in chartPart.ChartSpace.Descendants<DocumentFormat.OpenXml.Drawing.Charts.Formula>()) //{ // if (formula.Text.Contains("$2")) // { // string s = formula.Text.Split('$')[1]; // formula.Text += ":$" + s + "$" + totalCount; // } //} //chartPart.ChartSpace.Save(); }
/// <summary> /// Получить информацию о местоположении области с графиками /// </summary> /// <param name="chartPart">Область информацию которой нужно получить</param> /// <returns>Сведения о положении области графиков на листе</returns> public static TwoCellAnchor Anchor(this ChartPart chartPart) { if (chartPart == null) { return(null); } var drawingsPart = chartPart.GetParentParts().FirstOrDefault() as DrawingsPart; if (drawingsPart == null) { return(null); } var partId = drawingsPart.GetIdOfPart(chartPart); var anchors = drawingsPart.WorksheetDrawing.Elements <TwoCellAnchor>(); var theAnchor = anchors.FirstOrDefault(anc => { var chartRef = anc.FirstDescendant <DrawingCharts.ChartReference>(); if (chartRef == null) { return(false); } return(chartRef.Id.Value == partId); }); return(theAnchor); }
public IList <double> PointValues => _pointValues.Value; //TODO: delete setter #region Constructors public Series(ChartType type, OpenXmlElement sdkSeries, ChartPart sdkChartPart) { Check.NotNull(sdkSeries, nameof(sdkSeries)); _sdkChartPart = sdkChartPart ?? throw new ArgumentNullException(nameof(sdkChartPart)); _pointValues = new Lazy <List <double> >(GetPointValues(sdkSeries)); Type = type; }
private static void CopyChart(string fromPresentation1, string toPresentation2) { using (PresentationDocument ppt1 = PresentationDocument.Open(fromPresentation1, false)) using (PresentationDocument ppt2 = PresentationDocument.Open(toPresentation2, true)) { SlideId fromSlideId = ppt1.PresentationPart.Presentation.SlideIdList.GetFirstChild <SlideId>(); string fromRelId = fromSlideId.RelationshipId; SlideId toSlideId = ppt2.PresentationPart.Presentation.SlideIdList.GetFirstChild <SlideId>(); string toRelId = fromSlideId.RelationshipId; SlidePart fromSlidePart = (SlidePart)ppt1.PresentationPart.GetPartById(fromRelId); SlidePart toSlidePart = (SlidePart)ppt2.PresentationPart.GetPartById(fromRelId); var graphFrame = fromSlidePart.Slide.CommonSlideData.ShapeTree.GetFirstChild <GraphicFrame>().CloneNode(true); GroupShapeProperties groupShapeProperties = toSlidePart.Slide.CommonSlideData.ShapeTree.GetFirstChild <GroupShapeProperties>(); toSlidePart.Slide.CommonSlideData.ShapeTree.InsertAfter(graphFrame, groupShapeProperties); ChartPart fromChartPart = fromSlidePart.ChartParts.First(); ChartPart toChartPart = toSlidePart.AddNewPart <ChartPart>("rId2"); using (StreamReader streamReader = new StreamReader(fromChartPart.GetStream())) using (StreamWriter streamWriter = new StreamWriter(toChartPart.GetStream(FileMode.Create))) { streamWriter.Write(streamReader.ReadToEnd()); } EmbeddedPackagePart fromEmbeddedPackagePart1 = fromChartPart.EmbeddedPackagePart; EmbeddedPackagePart toEmbeddedPackagePart1 = toChartPart.AddNewPart <EmbeddedPackagePart>("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "rId3"); using (StreamReader streamReader = new StreamReader(fromEmbeddedPackagePart1.GetStream())) toEmbeddedPackagePart1.FeedData(streamReader.BaseStream); } }
/// <summary> /// Returns an instance of a <see cref="ChartModel"/> for the first chart with a specified chart id in a worksheet. /// </summary> /// <param name="ws">The <see cref="Worksheet"/> in which the chart resides</param> /// <param name="id">The chart id</param> /// <returns>The <see cref="ChartModel"/> that represents the chart</returns> public static ChartModel GetChartModel(Worksheet ws, string id) { Guard.IsNotNull(ws, "ws"); Guard.IsNotNullOrEmpty(id, "id"); ChartModel chartModel = null; ChartPart chartPart = GetChartPart(id, ws.WorksheetPart); if (chartPart != null) { // Get the Anchor that host the Graphic DrawingSpreadsheet.TwoCellAnchor anchor = GetHostingTwoCellAnchor(chartPart); // Get information about the chart IEnumerable <OpenXmlCompositeElement> chartElements = GetChartElements(chartPart); chartModel = new ChartModel(chartPart, anchor) { Worksheet = ws, ChartId = id, ChartElements = chartElements, IsValid = true, }; } return(chartModel); }
public static void majAreaChart(ChartPart cc, List <string> formules) { var bc = (OpenXmlElement)null; if (cc.ChartSpace.Descendants().OfType <Chart.AreaChart>().Count() != 0) { bc = cc.ChartSpace.Descendants <Chart.AreaChart>().First(); } else { bc = cc.ChartSpace.Descendants <Chart.Area3DChart>().First(); } for (int j = 0; j < (formules.Count - 1) / 2; j++) { Chart.AreaChartSeries newSerie = (Chart.AreaChartSeries)bc.Elements <Chart.AreaChartSeries>().First().CloneNode(true); newSerie.SeriesText.StringReference.Formula.Text = formules[2 * j + 1]; newSerie.Index.Val = (uint)j; newSerie.Order.Val = (uint)j; newSerie.Descendants <Chart.CategoryAxisData>().First().NumberReference.Formula.Text = formules[0]; newSerie.Descendants <Chart.Values>().First().NumberReference.Formula.Text = formules[2 * j + 2]; bc.Append(newSerie); } bc.Elements <Chart.AreaChartSeries>().First().Remove(); }
protected override string ReplaceValuesInChartInSlide(ChartPart chartPart, string categoryTitle, int nSerie) { ChartSpace chartSpace = chartPart.ChartSpace; GraficoBarre myBarre = new GraficoBarre2d(); myBarre.BarChartSpace = chartSpace; myBarre.getBarre(); if (myBarre.Barre != null) { BarChartSeries barChartSeries1 = myBarre.barChartSeries1; SeriesText seriesText1; CategoryAxisData categoryAxisData1; Values values1; modificaChartData("0,0", "", out seriesText1, out categoryAxisData1, out values1); barChartSeries1.SeriesText = seriesText1; barChartSeries1.Append(categoryAxisData1); barChartSeries1.Append(values1); return("ok"); } else { return("non trovo il grafico a barre!"); } }
//inuilisé mais peut etre pour les metacharts avec des séries de types diférent public void aiguillageSeriesParType(ChartPart cp, List <string> formules, List <string> typesSeries) { if (typesSeries.Count == (formules.Count - 1) / 2) { List <int> auto = new List <int>(); for (int i = 0; i < typesSeries.Count; i++) { if (typesSeries[i] == "") { auto.Add(i); } } List <string> formuleAuto = new List <string>() { formules[0] }; foreach (int i in auto) { formuleAuto.Add(formules[2 * i + 1]); formuleAuto.Add(formules[2 * i + 2]); } XcelWin.majMetaChart(cp, formules); } else { Console.WriteLine("Erreure Inconnue, fonction aiguillageSeriesParType"); } }
public static void majMetaChart(ChartPart cc, List <string> formules) { if (cc.ChartSpace.Descendants().OfType <Chart.BarChart>().Count() != 0) { majBarChart(cc, formules); } else if (cc.ChartSpace.Descendants().OfType <Chart.Bar3DChart>().Count() != 0) { majBarChart(cc, formules); } else if (cc.ChartSpace.Descendants().OfType <Chart.LineChart>().Count() != 0) { majLineChart(cc, formules); } else if (cc.ChartSpace.Descendants().OfType <Chart.Line3DChart>().Count() != 0) { majLineChart(cc, formules); } else if (cc.ChartSpace.Descendants().OfType <Chart.ScatterChart>().Count() != 0) { majScatterChart(cc, formules); } else { majAreaChart(cc, formules); } }
public static void fixChartData(ChartPart cc, string nomSheet, List <int> elems, string colValeur, string colLegende) { Chart.Values v = cc.ChartSpace.Descendants <Chart.Values>().First(); //Formule de mon piechart Chart.Formula f = v.Descendants <Chart.Formula>().First(); string formulaBis = "\'" + nomSheet + "\'!$" + colValeur + "$" + elems.ElementAt(0); foreach (int i in elems.Skip(1)) { formulaBis += ",\'" + nomSheet + "\'!$" + colValeur + "$" + i; } f.Text = formulaBis; //Formule pour les legendes Chart.CategoryAxisData cad = cc.ChartSpace.Descendants <Chart.CategoryAxisData>().First(); //Formule des legendes de mon piechart Chart.Formula f2 = cad.Descendants <Chart.Formula>().First(); string formula2Bis = "\'" + nomSheet + "\'!$" + colLegende + "$" + elems.ElementAt(0); foreach (int i in elems.Skip(1)) { formula2Bis += ",\'" + nomSheet + "\'!$" + colLegende + "$" + i; } f2.Text = formula2Bis; Chart.SeriesText st = cc.ChartSpace.Descendants <Chart.SeriesText>().First(); st.StringReference.Formula.Text = ""; }
public static void supprChart(WorksheetPart worksheetPart, string titre) { DrawingsPart a = worksheetPart.DrawingsPart; DrawingsPart dp = worksheetPart.DrawingsPart; IEnumerable <ChartPart> cps = a.ChartParts; ChartPart b = null; foreach (ChartPart cp in cps) { if (cp.ChartSpace.Descendants <Chart.Chart>().First().Descendants <Chart.Title>().First().Descendants <DocumentFormat.OpenXml.Drawing.Run>().First().Text.Text == titre) { b = cp; } } //obtention id du modèle string id = a.GetIdOfPart(b); a.DeletePart(b); //Suppression de l'ancre associée DocumentFormat.OpenXml.Drawing.Spreadsheet.WorksheetDrawing wsd = a.WorksheetDrawing; foreach (Draw.TwoCellAnchor tca in wsd.Elements <Draw.TwoCellAnchor>()) { string tmp = tca.Descendants <Chart.ChartReference>().First().Id; if (tmp == id) { tca.Remove(); } } }
/// <summary> /// Gets the id of the chart reference for the <see cref="ChartPart"/> /// </summary> /// <param name="chartPart">The <see cref="ChartPart"/></param> /// <returns>The chart reference id</returns> private static string GetChartReferenceId(ChartPart chartPart) { // DrawingPart is parent of ChartPart, and WorksheetPart parent of DrawingParts var drawingsPart = chartPart.GetParentParts().FirstOrDefault(); return(drawingsPart.GetIdOfPart(chartPart)); }
private void insertObjectChoices(ChartSheetContentSequence chartSheetContentSequence) { _writer.WriteStartElement(Dml.SpreadsheetDrawing.ElGraphicFrame, Dml.SpreadsheetDrawing.Ns); { // TODO: add graphic properties _writer.WriteStartElement(Dml.SpreadsheetDrawing.Prefix, Dml.SpreadsheetDrawing.ElNvGraphicFramePr, Dml.SpreadsheetDrawing.Ns); { _writer.WriteStartElement(Dml.SpreadsheetDrawing.Prefix, Dml.SpreadsheetDrawing.ElCNvPr, Dml.SpreadsheetDrawing.Ns); _writer.WriteAttributeString(Dml.DocumentProperties.AttrId, this._drawingsPart.RelId.ToString()); _writer.WriteAttributeString(Dml.DocumentProperties.AttrName, "Shape"); _writer.WriteEndElement(); // xdr:cNvPr _writer.WriteStartElement(Dml.SpreadsheetDrawing.Prefix, Dml.SpreadsheetDrawing.ElCNvGraphicFramePr, Dml.SpreadsheetDrawing.Ns); _writer.WriteStartElement(Dml.Prefix, Dml.DocumentProperties.ElGraphicFrameLocks, Dml.Ns); _writer.WriteAttributeString(Dml.DocumentProperties.AttrNoGrp, "1"); _writer.WriteEndElement(); // a:graphicFrameLocks _writer.WriteEndElement(); // xdr:cNvGraphicFramePr } _writer.WriteEndElement(); // xdr:nvGraphicFramePr // xdr:xfrm _writer.WriteStartElement(Dml.SpreadsheetDrawing.Prefix, Dml.SpreadsheetDrawing.ElXfrm, Dml.SpreadsheetDrawing.Ns); { _writer.WriteStartElement(Dml.Prefix, Dml.BaseTypes.ElOff, Dml.Ns); _writer.WriteAttributeString(Dml.BaseTypes.AttrX, "0"); _writer.WriteAttributeString(Dml.BaseTypes.AttrY, "0"); _writer.WriteEndElement(); // a:off _writer.WriteStartElement(Dml.Prefix, Dml.BaseTypes.ElExt, Dml.Ns); _writer.WriteAttributeString(Dml.BaseTypes.AttrCx, "0"); _writer.WriteAttributeString(Dml.BaseTypes.AttrCy, "0"); _writer.WriteEndElement(); // a:ext } _writer.WriteEndElement(); // xdr:xfrm _writer.WriteStartElement(Dml.GraphicalObject.ElGraphic, Dml.Ns); { _writer.WriteStartElement(Dml.GraphicalObject.ElGraphicData, Dml.Ns); _writer.WriteAttributeString(Dml.GraphicalObject.AttrUri, Dml.Chart.Ns); // create and convert chart part ChartPart chartPart = this._drawingsPart.AddChartPart(); ChartContext chartContext = new ChartContext(chartPart, chartSheetContentSequence, this._isChartsheet ? ChartContext.ChartLocation.Chartsheet : ChartContext.ChartLocation.Embedded); chartSheetContentSequence.Convert(new ChartMapping(this._xlsContext, chartContext)); _writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElChart, Dml.Chart.Ns); _writer.WriteAttributeString("r", "id", OpenXmlNamespaces.Relationships, chartPart.RelIdToString); _writer.WriteEndElement(); // c:chart _writer.WriteEndElement(); // a:graphicData } _writer.WriteEndElement(); // a:graphic } _writer.WriteEndElement(); // a:graphicFrame _writer.WriteElementString(Dml.SpreadsheetDrawing.Prefix, Dml.SpreadsheetDrawing.ElClientData, Dml.SpreadsheetDrawing.Ns, string.Empty); }
public static void CreateLineChart(DrawingsPart part, string formulaCat, string formulaVal, int row, bool newe, string title) { ChartPart chartPart1 = part.AddNewPart <ChartPart>(); GenerateChartPartContentLine(chartPart1, formulaCat, formulaVal, title); GeneratePartContentPie(part, chartPart1, row, newe); }
private void Init() { // Get chart part C.ChartReference cChartReference = _pGraphicFrame.GetFirstChild <A.Graphic>().GetFirstChild <A.GraphicData>() .GetFirstChild <C.ChartReference>(); ChartPart = (ChartPart)Slide.SlidePart.GetPartById(cChartReference.Id); C.PlotArea cPlotArea = ChartPart.ChartSpace.GetFirstChild <C.Chart>().PlotArea; _cXCharts = cPlotArea.Where(e => e.LocalName.EndsWith("Chart", StringComparison.Ordinal)); }
/// <summary> /// Creates a deep copy of this <see cref="ChartModel"/> and associated chart in the worksheet. /// </summary> /// <param name="targetWorksheet">The worksheet into which the clone will be placed. If null, the cloned <see cref="ChartModel"/> will be based on the original <see cref="Worksheet"/>/></param> /// <returns>The <see cref="ChartModel"/> that represents the chart</returns> public ChartModel Clone(Worksheet targetWorksheet) { // If no target worksheet is supplied, clone in situ (ie. on the current worksheet) Worksheet cloneToWorksheet = targetWorksheet == null ? this.worksheet : targetWorksheet; // Name of the source and target worksheet (for debugging) string sourceWorksheetName = this.worksheet.WorksheetPart.GetSheetName(); string targetWorksheetName = cloneToWorksheet.WorksheetPart.GetSheetName(); System.Diagnostics.Debug.Print("ChartModel - Cloning chart on worksheet '{0}' into '{1}'", sourceWorksheetName, targetWorksheetName); // Create a DrawingPart in the target worksheet if it does not already exist if (cloneToWorksheet.WorksheetPart.DrawingsPart == null) { var drawingsPart = cloneToWorksheet.WorksheetPart.AddNewPart <DrawingsPart>(); drawingsPart.WorksheetDrawing = new DrawingSpreadsheet.WorksheetDrawing(); // if a drawings part is being created then we need to add a Drawing to the end of the targetworksheet DocumentFormat.OpenXml.Spreadsheet.Drawing drawing = new DocumentFormat.OpenXml.Spreadsheet.Drawing() { Id = cloneToWorksheet.WorksheetPart.GetIdOfPart(cloneToWorksheet.WorksheetPart.DrawingsPart) }; cloneToWorksheet.Append(drawing); } // Take copy elements ChartPart chartPart2 = cloneToWorksheet.WorksheetPart.DrawingsPart.AddNewPart <ChartPart>(); chartPart2.FeedData(this.chartPart.GetStream()); // Clone the anchor for the template chart to get a new chart anchor DrawingSpreadsheet.TwoCellAnchor anchor2 = (DrawingSpreadsheet.TwoCellAnchor) this.anchor.CloneNode(true); // Insert the cloned anchor into the worksheet drawing of the DrawingsPart. cloneToWorksheet.WorksheetPart.DrawingsPart.WorksheetDrawing.Append(anchor2); // Update the ChartReference in the Anchor 2 (TwoCellAnchor -> GraphicFrame -> Graphic -> GraphicData -> ChartReference) DrawingCharts.ChartReference chartReference2 = anchor2.Descendants <DrawingCharts.ChartReference>().FirstOrDefault(); chartReference2.Id = cloneToWorksheet.WorksheetPart.DrawingsPart.GetIdOfPart(chartPart2); // Get information about the cloned chart IEnumerable <OpenXmlCompositeElement> chartElements = GetChartElements(chartPart2); // Wrap and return as a model ChartModel chartModel = new ChartModel(chartPart2, anchor2) { Worksheet = cloneToWorksheet, ChartId = this.ChartId, ChartElements = chartElements, IsValid = true, }; return(chartModel); }
private void Init() { var chartPartRef = _grFrame.GetFirstChild <A.Graphic>().GetFirstChild <A.GraphicData>().GetFirstChild <C.ChartReference>().Id; _sdkChartPart = (ChartPart)_shapeContext.SkdSlidePart.GetPartById(chartPartRef); _cChart = _sdkChartPart.ChartSpace.GetFirstChild <C.Chart>(); _sdkCharts = _cChart.PlotArea.Where(e => e.LocalName.EndsWith("Chart", StringComparison.Ordinal)).ToList(); // example: <c:barChart>, <c:lineChart> _seriesCollection = new Lazy <SeriesCollection>(GetSeriesCollection); _categories = new Lazy <CategoryCollection>(TryGetCategories); }
/// <summary> /// Updates the sources. /// </summary> /// <param name="chartPart">The chart part.</param> /// <param name="oldSourceName">Old name of the source.</param> /// <param name="newSourceName">New name of the source.</param> /// <param name="tableRowCount">The table row count.</param> public static void UpdateSources(this ChartPart chartPart, string oldSourceName, string newSourceName, int?tableRowCount) { // try and get a chart DocumentFormat.OpenXml.Drawing.Charts.Chart chart = chartPart.ChartSpace.GetFirstChild <DocumentFormat.OpenXml.Drawing.Charts.Chart>(); // if there is one if (chart != null) { // update any sources on it to ensure formula and ranges are correct Helpers.UpdateDataSourcesForChildren(chart, oldSourceName, newSourceName, tableRowCount); } }
protected static ChartPart CreateChartPart(DrawingsPart drawingsPart) { ChartPart chartPart = drawingsPart.AddNewPart <ChartPart>(); chartPart.ChartSpace = new ChartSpace(); chartPart.ChartSpace.Append(new EditingLanguage() { Val = new StringValue("en-US") }); return(chartPart); }
public Series(ChartType type, OpenXmlElement sdkSeries, ChartPart sdkChartPart, IChartRefParser chartRefParser) { _sdkSeries = sdkSeries ?? throw new ArgumentNullException(nameof(sdkSeries)); Check.NotNull(sdkSeries, nameof(sdkSeries)); Check.NotNull(sdkChartPart, nameof(sdkChartPart)); _sdkChartPart = sdkChartPart ?? throw new ArgumentNullException(nameof(sdkChartPart)); _chartRefParser = chartRefParser; _pointValues = new Lazy <List <double> >(GetPointValues); _name = new Lazy <string>(GetNameOrDefault); Type = type; }
public static void temporaire2(ChartPart cp) { Chart.PlotArea pa = cp.ChartSpace.Descendants <Chart.PlotArea>().First(); uint valAx = pa.GetFirstChild <Chart.ValueAxis>().AxisId.Val; uint catAx = pa.GetFirstChild <Chart.CategoryAxis>().AxisId.Val; pa.Descendants <Chart.BarChart>().First().Remove(); Chart.BarChart bc = GenerateBarChart(catAx, valAx); pa.Append(bc); }
/// <summary> /// Перенести область графиков /// </summary> /// <param name="chartPart">Область графиков для перемещения</param> /// <param name="topLeft">Левая верхняя позиция</param> /// <param name="bottomRight">Нижняя правая позиция</param> /// <returns>true - если операция выполнилась успешно, false - в обратном случае.</returns> public static bool RelocateTo(this ChartPart chartPart, Drawing.Spreadsheet.FromMarker topLeft, Drawing.Spreadsheet.ToMarker bottomRight) { var theAnchor = chartPart.Anchor(); if (theAnchor == null) { return(false); } theAnchor.FromMarker = topLeft; theAnchor.ToMarker = bottomRight; return(true); }
public Chart AddChart(string chartName, string rid) { ChartPart chartPart = mainPart.AddNewPart <ChartPart>(rid); //EmbeddedPackagePart embeddedPackagePart1 = chartPart.AddNewPart<EmbeddedPackagePart>("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "rId3"); //GenerateEmbeddedPackagePart1Content(embeddedPackagePart1); Paragraph paragraph = new Paragraph() { RsidParagraphAddition = "00C75AEB", RsidRunAdditionDefault = "000F3EFF" }; // Create a new run that has an inline drawing object Run run = new Run(); Drawing drawing = new Drawing(); dw.Inline inline = new dw.Inline(); inline.Append(new dw.Extent() { Cx = 5274310L, Cy = 3076575L }); inline.Append(new dw.EffectExtent() { LeftEdge = 0, TopEdge = 0, RightEdge = 2540, BottomEdge = 9525 }); dw.DocProperties docPros = new dw.DocProperties() { Id = 6666, Name = chartName }; inline.Append(docPros); inline.Append(new dw.NonVisualGraphicFrameDrawingProperties()); d.Graphic g = new d.Graphic(); d.GraphicData graphicData = new d.GraphicData() { Uri = "http://schemas.openxmlformats.org/drawingml/2006/chart" }; dc.ChartReference chartReference = new dc.ChartReference() { Id = rid }; graphicData.Append(chartReference); g.Append(graphicData); inline.Append(g); drawing.Append(inline); run.Append(drawing); paragraph.Append(run); body.AppendChild(paragraph); return(new Chart(chartPart)); }
public string GetSingleString(C.StringReference strRef, ChartPart chartPart) { var fromCache = strRef.StringCache?.GetFirstChild <C.StringPoint>().Single().InnerText; if (fromCache != null) { return(fromCache); } var formula = strRef.Formula; var cellStrValues = GetCellStrValues(formula, chartPart.EmbeddedPackagePart); return(cellStrValues.Single()); }
public IChartVisual AppendChartVisual(string name) { ChartPart chartPart = this.container.Part.AddNewPartDefaultId <ChartPart>(); chartPart.ChartSpace = new Charts.ChartSpace() { Date1904 = new Charts.Date1904() { Val = false } } .AppendChildFluent( new Charts.Chart() { PlotArea = new Charts.PlotArea(), DisplayBlanksAs = new Charts.DisplayBlanksAs() { Val = Charts.DisplayBlanksAsValues.Gap } } ); Charts.Chart chart = new Charts.Chart(); chart.SetAttribute(new OpenXmlAttribute("r", "id", "http://schemas.openxmlformats.org/officeDocument/2006/relationships", this.container.Part.GetIdOfPart(chartPart))); GraphicFrame graphicFrame = this.shapeTree.AppendChild(new GraphicFrame() { NonVisualGraphicFrameProperties = new NonVisualGraphicFrameProperties() { NonVisualDrawingProperties = new NonVisualDrawingProperties() { Name = name, Id = 6 // TODO: calculate }, NonVisualGraphicFrameDrawingProperties = new NonVisualGraphicFrameDrawingProperties(), ApplicationNonVisualDrawingProperties = new ApplicationNonVisualDrawingProperties() }, Graphic = new Drawing.Graphic() { GraphicData = new Drawing.GraphicData() { Uri = "http://schemas.openxmlformats.org/drawingml/2006/chart" } .AppendChildFluent(chart) } }); return(new OpenXmlChartVisual(this.container, graphicFrame)); }
public string modifica_Grafico(string path, string nomeSlide, string titoloSerie, int nChart, int nSerie) { PresentationDocument presentationDoc = null; try { presentationDoc = PresentationDocument.Open(path, true); SlidePart theSlidePart = PPointDocument.getSlidePart(presentationDoc, nomeSlide); if (theSlidePart != null) { if (theSlidePart.ChartParts.Count() > 0) { ChartPart chartPart = theSlidePart.ChartParts.Skip(nChart).FirstOrDefault(); if (ReplaceValuesInChartInSlide(chartPart, titoloSerie, nSerie) == "ok") { presentationDoc.PresentationPart.Presentation.Save(); return(string.Format("ok grafico {0} {1}", nomeSlide, titoloSerie)); } else { return(string.Format("non trovo il grafico nella slide '{0}'", nomeSlide)); } } else { return(string.Format("non trovo nessun grafico nella slide '{0}'", nomeSlide)); } } else { return(string.Format("non trovo la slide '{0}'", nomeSlide)); } } catch (Exception ex) { return(ex.Message); } finally { if (presentationDoc != null) { presentationDoc.Dispose(); } } }
public void exec(System.Data.DataTable dt) { System.IO.File.Copy(template, copie, true); SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(copie, true); WorkbookPart workbookPart = myWorkbook.WorkbookPart; WorksheetPart wsPart = XcelWin.getWorksheetPartByName(myWorkbook, "Feuil1"); //DocumentFormat.OpenXml.Spreadsheet.Columns columns = new Columns(); //for(int i=0;i<size.Length;i++) //{ // DocumentFormat.OpenXml.Spreadsheet.Column c = new Column(); // c.CustomWidth = true; // c.Min = (uint) i+1; // c.Max = (uint) i+1; // c.Width = size[i]; // columns.Append(c); //} //DocumentFormat.OpenXml.Spreadsheet.Columns cc = new Columns(); //cc.Append(new DocumentFormat.OpenXml.Spreadsheet.Column() { Min = 1, Max = 3, CustomWidth = true, Width = 5 }); ////wsPart.Worksheet.Append(cc); //Worksheet ws = wsPart.Worksheet; //ws.Append(cc); DrawingsPart drawingsPart1 = wsPart.AddNewPart <DrawingsPart>("rId1"); XcelWin.GenerateDrawingsPart1Content(drawingsPart1); ChartPart chartPart1 = drawingsPart1.AddNewPart <ChartPart>("rId1"); XcelWin.GenerateChartPart1Content(chartPart1); Drawing drawing1 = new Drawing() { Id = "rId1" }; wsPart.Worksheet.Append(drawing1); workbookPart.Workbook.Save(); myWorkbook.Close(); }
public void SetChartLocation(DrawingsPart drawingsPart, ChartPart chartPart, SpreadsheetLocation location) { drawingsPart.WorksheetDrawing = new WorksheetDrawing(); TwoCellAnchor twoCellAnchor = drawingsPart.WorksheetDrawing.AppendChild <TwoCellAnchor>(new TwoCellAnchor()); // Chart position twoCellAnchor.Append(new DocumentFormat.OpenXml.Drawing.Spreadsheet.FromMarker(new ColumnId(location.ColumnIndex.ToString()), new ColumnOffset("0"), new RowId(location.RowIndex.ToString()), new RowOffset("114300"))); twoCellAnchor.Append(new DocumentFormat.OpenXml.Drawing.Spreadsheet.ToMarker(new ColumnId((location.ColumnIndex + 12).ToString()), new ColumnOffset("0"), new RowId((location.RowIndex + 15).ToString()), new RowOffset("0"))); DocumentFormat.OpenXml.Drawing.Spreadsheet.GraphicFrame graphicFrame = twoCellAnchor.AppendChild <DocumentFormat.OpenXml. Drawing.Spreadsheet.GraphicFrame>(new DocumentFormat.OpenXml.Drawing. Spreadsheet.GraphicFrame()); graphicFrame.Macro = ""; // Chart name graphicFrame.Append(new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualGraphicFrameProperties( new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualDrawingProperties() { Id = new UInt32Value(2u), Name = "Chart 1" }, new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualGraphicFrameDrawingProperties())); graphicFrame.Append(new Transform(new Offset() { X = 0L, Y = 0L }, new Extents() { Cx = 0L, Cy = 0L })); graphicFrame.Append(new Graphic(new GraphicData(new ChartReference() { Id = drawingsPart.GetIdOfPart(chartPart) }) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/chart" })); twoCellAnchor.Append(new ClientData()); }
protected static void AppendGraphicFrame(DrawingsPart drawingsPart, ChartPart chartPart) { TwoCellAnchor twoCellAnchor = drawingsPart.WorksheetDrawing.AppendChild(new TwoCellAnchor()); twoCellAnchor.Append(new DocumentFormat.OpenXml.Drawing.Spreadsheet.FromMarker(new ColumnId("2"), new ColumnOffset("158233"), new RowId("2"), new RowOffset("16894"))); twoCellAnchor.Append(new DocumentFormat.OpenXml.Drawing.Spreadsheet.ToMarker(new ColumnId("17"), new ColumnOffset("276225"), new RowId("32"), new RowOffset("0"))); // Append a GraphicFrame to the TwoCellAnchor object. DocumentFormat.OpenXml.Drawing.Spreadsheet.GraphicFrame graphicFrame = twoCellAnchor.AppendChild <DocumentFormat.OpenXml. Drawing.Spreadsheet.GraphicFrame>(new DocumentFormat.OpenXml.Drawing. Spreadsheet.GraphicFrame()); graphicFrame.Macro = ""; graphicFrame.Append(new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualGraphicFrameProperties( new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualDrawingProperties() { Id = new UInt32Value(3u), Name = "Chart 1" }, new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualGraphicFrameDrawingProperties())); graphicFrame.Append(new Transform(new Offset() { X = 0L, Y = 0L }, new Extents() { Cx = 0L, Cy = 0L })); graphicFrame.Append( new Graphic(new GraphicData(new ChartReference() { Id = drawingsPart.GetIdOfPart(chartPart) }) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/chart" })); twoCellAnchor.Append(new ClientData()); }