本书《Jacob直接运用Excel图表函数》深入浅出地介绍了如何高效使用Excel的各种图表函数,帮助读者轻松掌握数据分析与可视化技巧。
初始化当前Java线程STA ComThread InitSTA;创建ActiveX组件xl new ActiveXComponent Excel Application;
尝试打开现有的Excel文件:
```java
xl.setProperty(Visible, new Variant(false));
Dispatch workbooks = xl.getProperty(Workbooks).toDispatch();
Dispatch workbook = Dispatch.invoke(workbooks, Open, Dispatch.Method,
new Object[]{excelPath, new Variant(false), // 是否只读
new Variant(false)},// 是否显示打开对话框
new int[1]).toDispatch();
获取所有工作表:
```java
Dispatch sheets = Dispatch.get(workbook, Sheets).toDispatch();
System.out.println(sheet数量: + Dispatch.get(sheets, count));
根据索引获取特定的工作表并绘图:
```java
for (int i = 0; i < sheetCount; ++i) {
Dispatch sheet = Dispatch.invoke(sheets, Item, Dispatch.Method,
new Object[]{new Variant(i)},
new int[1]).toDispatch();
创建图表对象和设置其属性,例如添加数据系列、设定线条颜色等:
```java
// 创建图表区域并填充数据到新图中。
Dispatch chartObjects = sheet.invoke(ChartObjects, Dispatch.Method).toDispatch();
Dispatch achart = chartObjects.invoke(Add,
new Object[]{new Double(12), // 横坐标起始位置
new Double(yHeight),
new Double(width),
new Double(height)},
new int[1]).toDispatch();
将图表添加到工作表中并设置其属性,如背景色、图例等:
```java
// 设置图表区域的填充颜色。
Dispatch chart = achart.get(Chart).toDispatch();
Dispatch range = sheet.invoke(Range, Dispatch.Method,
new Object[]{rangeX, rangeY}, // 数据范围
new int[2]).toDispatch();
保存并关闭工作簿,退出Excel应用程序:
```java
workbook.invoke(Save);
workbook.invoke(Close, new Variant(false));
xl.invoke(Quit);
最后释放COM资源和结束线程。
```java
ComThread.Release();
System.out.println(处理完成);
} catch (Exception e) {
e.printStackTrace();
}
```
这段代码展示了如何使用Java通过ActiveX组件操作Microsoft Excel,包括打开文件、绘制图表及保存工作簿等步骤。