Excel图表到JavaScript

Excel图表到JavaScript,javascript,excel,vba,openxml,highcharts,Javascript,Excel,Vba,Openxml,Highcharts,有谁能建议从MS Excel图表创建JavaScript图表的方法,以便保留颜色和其他格式选项吗?理想情况下,我可以创建一个HighCharts字符或一些看起来至少与用户在Excel中创建的字符相近的字符。目前,我正在研究开放的XML/Drawing ML文件格式,或者可能是VBA,以创建一个到一些JavaScript图表库(例如HighCharts)的转换层 请注意,这不仅仅是作为简单的CSV文件导出的情况,这里的关键考虑事项是保留图表格式 谢谢你的建议 A、 JavaScript?使用服务器

有谁能建议从MS Excel图表创建JavaScript图表的方法,以便保留颜色和其他格式选项吗?理想情况下,我可以创建一个HighCharts字符或一些看起来至少与用户在Excel中创建的字符相近的字符。目前,我正在研究开放的XML/Drawing ML文件格式,或者可能是VBA,以创建一个到一些JavaScript图表库(例如HighCharts)的转换层

请注意,这不仅仅是作为简单的CSV文件导出的情况,这里的关键考虑事项是保留图表格式

谢谢你的建议


A、 JavaScript?使用服务器端PHP插件会更容易,除非文件是在客户端加载的


请提供更多关于您的情况的信息

我可以推荐一个名为的插件,您可以在Excel中编写一些Javascript、HTML和css代码。它拥有一个带有嵌入式电子表格的在线编辑器,使转换更容易到Excel

我要做一个测试并更改数据,下面是我得到的:

我将数据存储在嵌入式电子表格中,由于有一个json文件,我可以在javascript代码中使用它:

{
    "data": "=A1:E16"
}
我在我的script.js中格式化数据,以便可以直接在Highcharts中加载数据(对于数字,必须将数据转换为浮点或int):

当然,您可以更改图表的设置(颜色、文本、字体、图表类型…)

完成后,可以通过将URL粘贴到中,直接将其加载到Excel中。下面是我的示例中的情况:

我使用Highchart作为示例,因为您提到了它,但您当然可以使用许多其他功能强大的库,如chart.js和plotly.js(用于3D图表)


披露:我是Funfun的开发者。

如果您想从excel中保存图表格式,那么你真正想要的是什么?你目前如何阅读Excel工作簿?@MarkBaker我目前没有阅读。用户在Excel中创建图表。他们是领域专家,知道如何使用Excel,因此我更希望保持这种方式,并找到一种将图表数据/元数据输出到其他形式的方法,这样我就可以了解析…@fazo我希望允许我们的用户创建带有特定标签和颜色的图表,然后将图表数据和元数据导出到HighCharts(理想情况下)。@dominicbri7基本上,有没有一种方法可以将Excel图表序列化为XML,然后我可以自己将其解析为所需的格式(JSON)。也许可以通过VBA访问图表?所有的例子都涉及到用VBA制作图表。我想通过VBA(例如)访问(由用户)制作的图表,然后以另一种形式输出该图表。您仍然需要从Excel文件中提取图表定义/数据。。。您的用户使用的是什么版本的Excel(是.xls还是.xlsx文件)?@MarkBaker这将是Excel 2007。要提取定义和数据,是否使用VBA,是否有此类示例?DrawingML/Open xml如何?如果是Excel 2007,那么解压.xlsx文件时,图表信息将保存在/xl/charts/chartN.xml文件中。。。但是,要阅读样式信息,还需要从/xl/styles.xml中提取样式信息。这可能是一个相当复杂的过程。我一直在为下一版本的PHPExcel从Excel文件中读取/写入图表,所以我知道这并不像读取XML文件那么简单,但这是可以做到的
var data = [];

for (var i = 1; i < $internal.data.length; i++)
  data.push(
    {
      x: parseFloat($internal.data[i][2]),
      y: parseFloat($internal.data[i][3]),
      z: parseFloat($internal.data[i][4]),
      name: $internal.data[i][1],
      country: $internal.data[i][0]
    }
  );
series: [{
        data: data
    }]