Tag: 图表

C#OpenXML ClosedXML读取/设置图表坐标轴最小值

我有一个带有“带标记线”的Excel电子表格。 该图表来源于同一工作簿中单独数据表中的数据。 如果我使用ClosedXML SDK打开工作簿,然后仅更改数据表,则会将数据值更改为全零和Y轴(从本示例).92到1.10到0%到100%,完全忽略事实上,我把轴设置为自动,并指定轴范围是“链接到源”。 奇怪的是,在Excel中,图表仍然显示数据已链接,并且单击数据范围会突出显示它们所链接的值,并且这些数据是正确的。 尽pipe如此,图表显示了零 我现在就在这一点上,只要它在C#中,OpenXML,ClosedXML或其他任何工具都无关紧要。 我只需要图表工作。 以下是同一图表的两个示例图像: 之前: 后: 这里是我的代码,其中包含列表的列表,其中包含我从API调用中获得的CSV响应的值,然后更新给定的参数: private bool UpdateSheetFrom2DList(string filename, string sheetName, List<List<string>> lstVals) { bool rtn = false; try { var workbook = new XLWorkbook(filename); IXLWorksheet ws = workbook.Worksheet(sheetName); for (int y = 0; y < lstVals.Count; y++) { List<string> lstRow = lstVals[y]; for (int x = 0; […]

POI线图轴位置等问题

我正在处理POI来创build图表,我也遇到了一些问题。 首先,即使我改变AxisPosition,我总是有x轴在底部和y轴在左边。 其次,我想有2个Y轴。 这是我的代码的一部分: 函数来创build图表: private XSSFChart createChart(Sheet sheet,int[] anchors, String xLabel, String yLabel, String title){ Drawing drawing = sheet.createDrawingPatriarch(); ClientAnchor anchor = drawing.createAnchor(anchors[0], anchors[1], anchors[2], anchors[3], anchors[4], anchors[5], anchors[6], anchors[7] ); XSSFChart chart = (XSSFChart) drawing.createChart(anchor); ChartLegend legend = chart.getOrCreateLegend(); legend.setPosition(LegendPosition.TOP_RIGHT); ChartAxis bottomAxis = chart.getChartAxisFactory().createCategoryAxis(AxisPosition.TOP); ValueAxis leftAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.LEFT); ValueAxis rightAxis = chart.getChartAxisFactory().createValueAxis(AxisPosition.RIGHT); leftAxis.setCrosses(AxisCrosses.AUTO_ZERO); […]

循环范围1,范围2,…,范围(n)以添加图表数据系列

我想在for循环中使用单个范围调用来将数据系列添加到图表(XY线)。 在我的示例中,基于用户input他们想要在图(1,2或3),ChartData(1),ChartData(2)和ChartData(3)上想要的多less数据序列,将对应于SeriesCollection (1),系列(2),系列(3)。 无法弄清楚为范围使用什么。 Dim cb As ComboBox Dim rge As range Dim MyChart As Chart Dim ChartData As range Dim chartIndex As Integer Dim ChartName(3) As String Dim n As Long Dim i As Long Dim valid As Boolean: valid = True m = Application.InputBox("Please enter the number of TML's to graph (1,2, or […]

Excel图表x轴显示连续的数字,而不是实际值

我在我的Excel文件中有2列。 1是具有以下值的“代码”:2050,2196,1605,D1488。 下一列是具有美元金额值的“金额”。 插入柱形图时,x轴显示1,2,3,4,5,6。y轴显示代码和数量的两个小节。 我想要x轴在“代码”列中显示数字。 我该怎么做呢? 我意识到这是因为他们是数字,这就是为什么它不工作。 但是,如果我改变这个列如实际的文字,如a,b,c等,那么它将工作。 那么有什么办法来解决这个问题?

VBA脚本将Excel图表复制到Word不能在更高版本的Word中工作

我正在尝试将Excel图表复制到Word。 我在Excel中有以下脚本,它适用于PC和Office Mac 2011的Office 2003.在Office(2016)的更高版本中,图表在粘贴时不会resize,并且它所search的令牌不会被replace为图表它在早期的版本中。 这是可用的脚本,但不适用于更高版本的Office。 任何帮助将不胜感激。 ActiveChart.ChartArea.Select ActiveChart.ChartArea.Copy Set wrd = CreateObject("Word.Application") wrd.Documents(DocumentName).Activate wrd.Selection.Find.ClearFormatting With wrd.Selection.Find .Text = "insert" & ChartName 'This is the token it is looking for in the Word document and is where the chart should be inserted. .Replacement.Text = "" .Forward = True .Wrap = 1 'wdFindContinue .Format = False […]

Openpyxl可以用来创buildErrorBars瓦特/dynamic更新高度?

前面的问题显示了如何将错误栏高度设置为在python中设置的固定值。 是否可以设置,而不是将错误栏高度设置为其他单元格中由Excel存储的计算值? 理想情况下,更改底层数据可能会改变错误的高度? 对于这个问题,excel甚至有可能做什么? 这是我的尝试: from openpyxl import Workbook from openpyxl.chart import BarChart, Reference from openpyxl.chart.data_source import NumDataSource, NumData, NumVal, NumRef from openpyxl.chart.series import ErrorBars from openpyxl.chart.series_factory import SeriesFactory from random import randint # Create a new workbook book = Workbook(encoding="utf-8") sheet = book.active # Write 5 random ints to worksheet for i in range […]

使用XlsxWriter在python 3.5中创build图表,其中系列值基于循环

我正在使用Windows 10上的Python 3.5。希望我可以阐明我正在尝试完成,同时允许尽可能less的混淆… 我已经编写了一个Python脚本来执行几个任务,其中一些任务包括通过XlsxWriter基于脚本前面部分代码生成的数据创build一个Excel工作簿。 我试图让我的脚本也创build一个图表,再次使用基于这些数据的XlsxWriter。 我在网上看到了几个例子,虽然有用,但是这些例子和我自己的个人代码之间有一个特定的区别,这让我不确定如何继续。 尝试将一系列图表添加到图表时,出现了我的问题。 当configuration一个系列时,我遇到的几个例子包括这样的东西(注意:我实际上并没有使用这个确切的代码): chart.add_series({ 'name': '=Sheet1!$A$2:$A$7 ' }) 由于我的脚本涉及循环和可变长度的性质,所产生的数据可以填充到各个列和行中,所以我不能指定像“名称”这样的固定引用,例如“Sheet1!$ A $ 2:$ A 7美元“,因为虽然从我的脚本生成的所有数据将存在于同一张纸上,但它永远不会始终只在列”A“中,并且只在单元格2到7之间。 那么,我怎样才能解决这个问题呢? 同样,由于variables项等,我告诉XlsxWriter填充单元格的方式是创buildvariablesrow_1 = 0和col_1 = 0 ,并根据需要递增它们。 我可以写一些类似的东西 chart.add_series({ 'name': '=Sheet1!row:col+7' }) 通过XlsxWriter? 编辑 :所以我只是发现我可以使用替代索引似乎是我的解决方法添加到图表的一个系列。 但是,我收到以下错误消息: UserWarning: Must specify 'values' in add_series() warn("Must specify 'values' in add_series()") 基于这一点的代码: chart.add_series({ 'Subscribers': ['Sheet1', row_1 + 2, col_1, 2 […]

如何使用VBA在Excel表格上安排图表?

我在excel工作簿中安排了大量的数据。 每组数据包含R4,C192,每张数据包含十组数据。 此代码创build十个图表,每个数据集一个图表。 在创build图表之后,它们被堆叠在另一个之上。 我需要移动它们,以便它们按逻辑排列。 这是我需要做几千次的任务。 我工作了以前的解决scheme不稳定的结果。 我想要 什么我有什么 Sub CreateCharts() 'This is where my variable names are stored, for titles. Sheets("names").Select Trial = "motor_pre" 'loop interates through subject names (k loop) For k = 2 To 19 subj = Worksheets("names").Cells(k, 1).Text If subj = "end" Then End x = 1 'innerloop iterates through regions […]

Excel图表轴比例

已经使用这个博客链接图表轴到单元格值。 Sub ScaleAxes() Dim wks As Worksheet Set ws = Worksheets("AXIS") Set cht = ActiveWorkbook.ChartObjects("ChartName1","ChartName2") For Each cht In ActiveWorkbook.ChartObjects cht.Activate With ActiveChart.Axes(xlCategory, xlPrimary) .MaximumScale = ws.Range("$B$12").Value .MinimumScale = ws.Range("$B$11").Value .MajorUnit = ws.Range("$B$13").Value End With Next cht End Sub 我的目标是使用轴值的单个工作表的值来更新不同工作表上的多个图表。 大多数示例都使用同一工作表上的图表。 我目前得到错误438 – 任何想法?

返回Excel图表使用VBA引用的工作表

我需要能够识别excel图表(在工作表上)从中获取数据的工作表。 我只需要系列1参考的数据表。 我已经开始尝试从.SeriesCollection(1).Formula中提取表单名称,但它变得非常复杂。 这是我到目前为止: Sub GetChartDataSheet() Dim DataSheetName As String Dim DataSheet As Worksheet DataSheetName = ActiveChart.SeriesCollection(1).Formula DataSheetName = Left(DataSheetName, InStr(1, DataSheetName, "!$") – 1) DataSheetName = WorksheetFunction.Replace(DataSheetName, 1, Len("=series("), "") If Left(DataSheetName, 1) = "'" And Right(DataSheetName, 1) = "'" Then DataSheetName = Mid(DataSheetName, 2, Len(DataSheetName) – 2) DataSheetName = Replace(DataSheetName, "''", "'") Set […]