
XML
csharpusing DocumentFormat.OpenXML.Packaging;using DocumentFormat.OpenXML.wordprocessing;public void CreatewordDocument(string filePath){ using (var document = wordprocessingDocument.Create(filePath, wordprocessingDocumentType.Document)) { var mAInPart = document.AddMAInDocumentPart(); mAInPart.Document = new Document(); mAInPart.Document.AppendChild(new Body()); mAInPart.Document.Save(); }}以上代码创建了一个新的word文档,并保存在指定的文件路径。步骤二:插入电子表格接下来,我们需要在word文档中插入一个电子表格。可以使用以下代码在指定位置插入一个空白的表格。csharppublic void InsertTable(string filePath, int rowIndex, int columnIndex){ using (var document = wordprocessingDocument.Open(filePath, true)) { var body = document.MAInDocumentPart.Document.Body; var table = new Table(); var tableProperties = new TableProperties( new TableBorders( new TopBorder { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 1 }, new BottomBorder { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 1 }, new LeftBorder { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 1 }, new RightBorder { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 1 }, new InsideHorizontalBorder { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 1 }, new InsideVerticalBorder { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 1 } ) ); table.AppendChild(tableProperties); var row = new TableRow(); var cell = new TableCell(); cell.Append(new Paragraph(new Run(new Text("示例表格")))); row.Append(cell); table.Append(row); body.InsertAt(table, rowIndex); document.MAInDocumentPart.Document.Save(); }}以上代码在指定的行和列位置插入一个带有标题的表格。步骤三:插入图表最后,我们需要在表格中插入一个图表。可以使用以下代码在表格中插入一个柱状图。csharppublic void InsertChart(string filePath, int rowIndex, int columnIndex){ using (var document = wordprocessingDocument.Open(filePath, true)) { var body = document.MAInDocumentPart.Document.Body; var chartPart = document.MAInDocumentPart.AddNewPart<ChartPart>(); chartPart.ChartSpace = new ChartSpace(); chartPart.ChartSpace.AppendChild(new EditingLanguage { Val = "en-US" }); var chart = chartPart.ChartSpace.AppendChild(new Chart()); var plotArea = chart.AppendChild(new PlotArea()); var barChart = plotArea.AppendChild(new BarChart()); var barChartSeries = barChart.AppendChild(new BarChartSeries()); var values = barChartSeries.AppendChild(new Values()); values.AppendChild(new NumberReference(new NumberingCache(new FormatCode("General")) { Append(new CachedNumberValue("100")) })); var barChartCategoryAxis = barChart.AppendChild(new CategoryAxis(new AxisId { Val = new UInt32Value(48650112u) }, new Scaling(new Orientation { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.OrientationValues>(DocumentFormat.OpenXML.Drawing.Charts.OrientationValues.MinMax) }), new AxisPosition { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.AxisPositionValues>(DocumentFormat.OpenXML.Drawing.Charts.AxisPositionValues.Bottom) }, new TickLabelPosition { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.TickLabelPositionValues>(DocumentFormat.OpenXML.Drawing.Charts.TickLabelPositionValues.NextTo) }, new CrossingAxis { Val = new UInt32Value(48650112u) }, new Crosses { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.CrossesValues>(DocumentFormat.OpenXML.Drawing.Charts.CrossesValues.AutoZero) }, new AutoLabeled { Val = new BooleanValue(true) }, new LabelAlignment(new Alignment { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.LabelAlignmentValues>(DocumentFormat.OpenXML.Drawing.Charts.LabelAlignmentValues.Center) }), new LabelOffset(new Offset { Val = 100u }), new Title(new Layout(new ManualLayout(new Left { Val = 0.5 }, new Top { Val = 0.5 }, new Width { Val = 2.0 }, new Height { Val = 2.0 })), new Overlay { Val = false }, new ChartText(new RichText(new Paragraph(new Run(new Text("示例图表")))))))); var barChartValueAxis = barChart.AppendChild(new ValueAxis(new AxisId { Val = new UInt32Value(48672768u) }, new Scaling(new Orientation { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.OrientationValues>(DocumentFormat.OpenXML.Drawing.Charts.OrientationValues.MinMax) }), new AxisPosition { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.AxisPositionValues>(DocumentFormat.OpenXML.Drawing.Charts.AxisPositionValues.Left) }, new MajorGridlines(), new DocumentFormat.OpenXML.Drawing.Charts.NumberingFormat { FormatCode = "General", SourceLinked = true }, new TickLabelPosition { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.TickLabelPositionValues>(DocumentFormat.OpenXML.Drawing.Charts.TickLabelPositionValues.NextTo) }, new CrossingAxis { Val = new UInt32Value(48650112u) }, new Crosses { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.CrossesValues>(DocumentFormat.OpenXML.Drawing.Charts.CrossesValues.AutoZero) }, new CrossBetween { Val = new EnumValue<DocumentFormat.OpenXML.Drawing.Charts.CrossBetweenValues>(DocumentFormat.OpenXML.Drawing.Charts.CrossBetweenValues.Between) })); barChart.Append(new AxisId { Val = new UInt32Value(48650112u) }); barChart.Append(new AxisId { Val = new UInt32Value(48672768u) }); chartPart.ChartSpace.Save(); var chartReference = new Drawing(new Inline(new Extent { Cx = 990000L, Cy = 792000L }, new DocProperties { Id = "1", Name = "Chart 1" }, new Graphic(new GraphicData(new DocumentFormat.OpenXML.Drawing.Charts.ChartReference { Id = document.MAInDocumentPart.GetIdOfPart(chartPart) }) { Uri = "http://schemas.openXMLformats.org/drawingml/2006/chart" }) { Uri = "http://schemas.openXMLformats.org/drawingml/2006/mAIn" })) { DistanceFromTop = 0u, DistanceFromBottom = 0u, DistanceFromLeft = 0u, DistanceFromRight = 0u }); var cell = body.Elements<Table>().ElementAt(rowIndex).Elements<TableRow>().ElementAt(columnIndex).Elements<TableCell>().First(); cell.RemoveAllChildren(); cell.Append(chartReference); document.MAInDocumentPart.Document.Save(); }}以上代码在指定的行和列位置插入一个柱状图。通过使用C# OpenXML库,我们可以很方便地在word文档中嵌入电子表格图表。本文介绍了如何使用C# OpenXML来实现这一功能,并提供了相应的案例代码。希望本文对您在C#开发中嵌入电子表格图表有所帮助。参考链接:- [OpenXML SDK库](XML/">https://www.nuget.org/packages/DocumentFormat.OpenXML/)Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号