Epplus插入图表ColumnStacked3D切换行/列

2023-12-31

我正在使用 epplus 在我的程序中创建 Excel! 我需要插入柱形图。 这是我的代码:

//Add the chart to the sheet
var chart = sheet.Drawings.AddChart(chartTitle, eChartType.ColumnStacked3D);
chart.SetPosition(positionRow, 2, positionCol, 2);
chart.Title.Text = chartTitle;
chart.Title.Font.Bold = true;
chart.Title.Font.Size = 18;
chart.SetSize(width, height);

//Set the data range
chart.Series.Add("D17:D22", "B17:B22");
chart.Series.Add("P17:P22", "B17:B22");

我得到结果:

但我想要的结果是:

从程序创建 Excel 文件后,我打开它并更改图表: 右键单击图表/选择数据/切换行/列。 如何在代码中切换行/列?或者如何插入如下图所示的图表?

抱歉英语不好

非常感谢!


Excel 中的该按钮只是切换数据并重建图表。而不是尝试更好地模仿它,从一开始就以正确的方式构建图表。

我的意思是你的原始图表将数据视为2数据系列,但你真正想要的是6系列。

唯一的问题是 x 轴上的值 - Epplus 似乎没有直接的方法来获取该系列的类别(水平)轴标签。因此,您必须通过 XML 操作来完成此操作,如下所示。

因此,将您的代码更改为:

//Set the data range
//chart.Series.Add("D17:D22", "B17:B22");
//chart.Series.Add("P17:P22", "B17:B22");

for (var i = 0; i < opt.Count; i++)
{
    var datarange = sheet.Cells[$"Bar!D{17 + i},Bar!P{17 + i}"];
    var ser = chart.Series.Add(datarange.Address, $"B{17 + i}:B{17 + i}");
    ser.HeaderAddress = sheet.Cells[$"$B{17 + i}"];
}

//have to remove cat nodes from each series so excel autonums 1 and 2 in xaxis
var chartXml = chart.ChartXml;
var nsm = new XmlNamespaceManager(chartXml.NameTable);

var nsuri = chartXml.DocumentElement.NamespaceURI;
nsm.AddNamespace("c", nsuri);

//Get the Series ref and its cat
var serNodes = chartXml.SelectNodes("c:chartSpace/c:chart/c:plotArea/c:bar3DChart/c:ser", nsm);
foreach (XmlNode serNode in serNodes)
{
    //Cell any cell reference and replace it with a string literal list
    var catNode = serNode.SelectSingleNode("c:cat", nsm);
    catNode.RemoveAll();

    //Create the string list elements
    var ptCountNode = chartXml.CreateElement("c:ptCount", nsuri);
    ptCountNode.Attributes.Append(chartXml.CreateAttribute("val", nsuri));
    ptCountNode.Attributes[0].Value = "2";

    var v0Node = chartXml.CreateElement("c:v", nsuri);
    v0Node.InnerText = "opening";
    var pt0Node = chartXml.CreateElement("c:pt", nsuri);
    pt0Node.AppendChild(v0Node);
    pt0Node.Attributes.Append(chartXml.CreateAttribute("idx", nsuri));
    pt0Node.Attributes[0].Value = "0";

    var v1Node = chartXml.CreateElement("c:v", nsuri);
    v1Node.InnerText = "closing";
    var pt1Node = chartXml.CreateElement("c:pt", nsuri);
    pt1Node.AppendChild(v1Node);
    pt1Node.Attributes.Append(chartXml.CreateAttribute("idx", nsuri));
    pt1Node.Attributes[0].Value = "1";

    //Create the string list node
    var strLitNode = chartXml.CreateElement("c:strLit", nsuri);
    strLitNode.AppendChild(ptCountNode);
    strLitNode.AppendChild(pt0Node);
    strLitNode.AppendChild(pt1Node);
    catNode.AppendChild(strLitNode);
}

pck.Save();

这给出了我的单元测试的输出(由数字组成):

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Epplus插入图表ColumnStacked3D切换行/列 的相关文章

  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 将 MS 转换为秒

    我发现这个公式可以用来将 MS 转换为秒 但它是为 Excel 2002 编写的 而我正在使用 2010 CONCATENATE TEXT INT B1 1000 86400 hh mm ss B1 INT B1 1000 1000 以下是
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • Eclipse 不允许从另一个工作区访问外部 jar 中的静态接口方法

    有两个 Eclipse 工作区 工作区A and 工作区B In 工作区A 有一个项目 其接口定义了公共静态方法 package workspacea public interface Foo public static String sa
  • 将自定义搜索字段添加到 DataTable 对象

    我需要将在页面上创建的字段添加到 DataTable 对象 尽管它们不是典型的参数 顺序 搜索 分页等 但它们可以与 DataTables 对象状态的其余部分一起保存和加载 JavaScript document ready functio
  • Android 设备选择器窗口目标栏中的橙色三角形是什么意思?

    当我使用 Eclipse 启动 Android 应用程序时 会出现通常的窗口 Android Device Chooser 我可以在这里选择要在哪个设备上运行我的应用程序 在目标列中 我的目标旁边会出现一个带有感叹号的橙色三角形 有点 警告
  • Numpy:从给定范围生成组合的有效方法

    我有一个 n 维数组 如下所示 np array 0 3 0 3 0 10 在此数组中 元素表示低值和高值 前任 0 3 指的是 0 1 2 3 我需要使用上面给出的范围生成所有值的组合 例如 我想要 0 0 0 0 0 1 0 1 0 3
  • 重新编码数值向量 R

    我有一个数字向量 让我们这样说 x lt rep 1 6 300 我想做的是重新编码向量 使 6 1 5 2 4 3 3 4 2 5 1 6 我不想从中创造一个因素 到目前为止 我尝试过的所有操作都因为顺序而给出了错误的计数 即 x x 6
  • Haskell 中一元运算符的前缀形式

    In GHCi 前奏 gt 3 2 5 前奏 gt 3 2 6 前奏 gt 3 20 66666666666666666 前奏 gt 3 2没有 Num t gt t1 的实例由字面意思产生的3 at
  • 使用 FILTERXML 将字符串解析为表

    这与此有关question https stackoverflow com questions 69045317 how to calculate backplane throughput given an arbitrary list o
  • 数组的 setter 和 getter

    我是 Java 新手 我需要一些澄清如何解决问题 我有课Epicycle 定义如下 public class Ts epicycle private double epoch private double tle new double 10
  • xmpphp XMPP,从 php 脚本发送消息

    你好 我有一个 jabberserver 我希望能够从 php 脚本向用户推送消息 F x 如果我从浏览器调用 script php 它会向用户发送一条消息 我已经尝试过 jaxl 和 xmpphp 这两个 xmp 框架 但我无法让它工作
  • Angular2 beta:嵌套基于表单的父/子组件并从父级进行验证

    我正在尝试在 Angular2 Plunker 中带有 TS 的 beta 0 中实现一个具有 2 个嵌套表单的场景 每个表单由一个组件表示 父组件是Word 它代表假字典中的单词 子组件是WordSense s 每个都代表父词的一种含义
  • 使用 SmtpClient 时“操作超时”

    我正在尝试使用 C 框架创建一个小应用程序来发送电子邮件 然而 它不起作用 该应用程序总是给我 操作超时 我不知道为什么 这是我的代码 private void button1 Click object sender EventArgs e
  • 在 PostGIS 中,大于半个世界的多边形被视为相反的多边形

    我将 GeoDjango 与 PostGIS 结合使用 并尝试使用多边形从数据库中获取属于其中的记录 如果我定义一个大于地球面积一半的多边形 则假定多边形的 内部 是我打算作为 外部 的较小区域 并且仅返回其外部的结果 我可以使用这个较小的
  • 使用 CSS Flex 使行中的元素等高

    我试图使用黄色背景的元素与该行中的其他元素具有相同的高度flex 但无法通过这种设计弄清楚 这li元素只是不想处于全高 运行代码片段看看我在说什么 谢谢你 html body height 100 margin 0 padding 0 ma
  • 如何超越这个正则表达式替代品?

    经过大量测量后 我在我们的一项 Windows 服务中发现了一个我想要优化的热点 我们正在处理可能包含多个连续空格的字符串 并且我们希望减少到仅单个空格 我们使用静态编译的正则表达式来完成此任务 private static readonl
  • DDD:更新实体多个属性的指南

    所以 我决定学习 DDD 因为它似乎可以解决我一直面临的一些架构问题 虽然有很多视频和示例博客 但我还没有遇到可以指导我解决以下场景的视频和示例博客 假设我有实体 public class EventOrganizer IEntity pu
  • C#-在“封闭”局部作用域中使用变量?

    我正在尝试向 C 应用程序添加一些新功能 特别是尝试复制其某些行为 但在 Web 浏览器中 而不是像当前那样在应用程序中复制 我正在尝试调用已在中定义的方法Browser cs从方法内部的类MainWindow cs class 该方法定义
  • ImportError:没有名为 sklearn.preprocessing 的模块

    我按照这些在 Ubuntu 上成功安装了 scikit learn指示 http scikit learn org 0 13 install html install official release 但是 当我运行使用它的程序时 出现此错
  • Axis2:将非必需属性添加到 WSDL 时避免出现“意外子元素”错误

    我有一个 NET WCF 服务和一个使用 Axis2 生成服务存根的 Java 应用程序 当我添加一个optionalWCF 中数据合约的属性以及将其排序在属性列表的末尾 这应该是向后兼容的更改 它会导致意外的子元素Java 应用程序中的错
  • 创建 GraphQLHttpClient 时出现 GraphQLClient 错误:IGraphQLWebsocketJsonSerializer

    使用 GraphQL 版本 2 1 0 我无法创建对象 GraphQLHttpClient 我立即收到以下错误 System AggregateException HResult 0x80131500 Message One or more
  • Epplus插入图表ColumnStacked3D切换行/列

    我正在使用 epplus 在我的程序中创建 Excel 我需要插入柱形图 这是我的代码 Add the chart to the sheet var chart sheet Drawings AddChart chartTitle eCha