共计 4018 个字符,预计需要花费 11 分钟才能阅读完成。
前言
Microsoft Excel 的 XLSX 格局以及基于文本的 CSV(逗号分隔值)格局,是数据交换中常见的文件格式。应用程序通过实现对这些格局的读写反对,能够显著晋升性能。在本文中,小编将为大家介绍如何借助葡萄城公司地 Java API 组件 GrapeCity Documents for Excel(以下简称 GcExcel)将 CSV 文件转化为 XLSX 文件。
具体操作步骤如下:
- 创立我的项目(应用 intelliJ IDEA 创立一个新的 Maven 我的项目)
- 查问数据(应用 AlphaVantage Web 服务获取 CSV 格局的月度 BTC-USD 数据)
- 加载 CSV
- 解决 CSV(重新排列、创建表格并创立带有趋势线的图表)
- 返回 XLSX
1)创立我的项目
(1)应用 intelliJ IDEA,创立一个新我的项目。
(2)为我的项目输出项目名称“BTC_Chart_WebService”,并在左侧菜单中选择 Maven Archetype 后抉择一个我的项目寄存地位,而后点击下一步。
(3)关上 pom.xml 文件并增加 GcExcel 依赖项
<dependency>
<groupId>com.grapecitysoft.documents</groupId>
<artifactId>gcexcel</artifactId>
<version>7.0.1</version>
</dependency>
2)查问数据
创立一个 CSV 类,用于从 AlphaVantage Web 服务查问 CSV 格局的月度 BTC-USD 数据。
public static String getCsvData() {
String csv = null;
String apiKey = "YOUR_API_KEY";
String queryUrl = String.format(
"https://www.alphavantage.co/query?function=DIGITAL_CURRENCY_MONTHLY&symbol=BTC&market=USD&apikey=%s&datatype=csv",
apiKey);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(queryUrl))
.GET()
.build();
try {HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
csv = response.body();} catch (IOException | InterruptedException e) {e.printStackTrace();
}
return csv;
}
3)加载 CSV
接下来,创立一个 XLSX 类,并增加办法 AnalysisCSV,入参为 csv 字符串,该办法会返回一个 Workbook 类型的工作簿对象。
public static Workbook AnalysisCSV(String csvStr) {Workbook workbook = new Workbook();
byte[] arr = csvStr.getBytes(StandardCharsets.UTF_8);
try (InputStream s = new ByteArrayInputStream(arr)) {workbook.open(s, OpenFileFormat.Csv);
} catch (IOException e) {e.printStackTrace();
}
return workbook;
}
4)解决 CSV
首先,用代码获取带有 CSV 数据的 IWorksheet,并重排列列的程序,将 Volume 列放在 Date 和 Open 列之间。而后,创立一个名为“每月比特币数据”的表格,蕴含 CSV 数据,并主动适应表中的列。
接着,在工作表中增加一个新的 StockVOHLC(成交量、收盘、最高、最低、开盘)类型的图标,并笼罩整个表格范畴;设置图标的题目,增加系列到图标,扭转类别轴的单位为月份,更新类别轴刻度标签的方向和数字格局;而后创立三条趋势线。趋势线别离以蓝色、绿色和红色显示成交量、最高价和最低价的三个月挪动平均线。
public static void processWorkbook(Workbook workbook){IWorksheet worksheet = workbook.getWorksheets().get(0);
// 把第 K 列数据挪动到 B 列地位
worksheet.getRange("B:B").insert();
worksheet.getRange("K:K").copy(worksheet.getRange("B:B"));
worksheet.getRange("K:K").delete();
// 获取数据范畴
IRange usedRange = worksheet.getUsedRange();
// 创建表格
ITable addTable = worksheet.getTables().add(usedRange, true);
addTable.setName("每月比特币数据");
usedRange.autoFit();
// 创立图表
IShape iShape = worksheet.getShapes().addChart(ChartType.StockVOHLC, 0, 0, usedRange.getWidth(), usedRange.getHeight());
IChart chart = iShape.getChart();
chart.getChartTitle().setText("比特币每月收盘 - 最高 - 最低 - 开盘 - 成交量");
chart.getSeriesCollection().add(worksheet.getRange(0,0,usedRange.getRowCount(),6), RowCol.Columns,true,true);
IAxis categoryAxis = chart.getAxes().item(AxisType.Category);
categoryAxis.setBaseUnit(TimeUnit.Months);
categoryAxis.getTickLabels().setOrientation(45);
categoryAxis.getTickLabels().setNumberFormat("d/m/yyyy");
ITrendline voltrend = chart.getSeriesCollection().get(0).getTrendlines().add();
voltrend.setName("3 个月挪动均匀成交量");
voltrend.setType(TrendlineType.MovingAvg);
voltrend.setPeriod(3);
voltrend.getFormat().getLine().getColor().setRGB(Color.GetBlue());
voltrend.getFormat().getLine().setDashStyle(LineDashStyle.RoundDot);
ITrendline hightrend = chart.getSeriesCollection().get(2).getTrendlines().add();
hightrend.setName("3 个月挪动均匀最高价");
hightrend.setType(TrendlineType.MovingAvg);
hightrend.setPeriod(3);
hightrend.getFormat().getLine().getColor().setRGB(Color.GetGreen());
hightrend.getFormat().getLine().setDashStyle(LineDashStyle.RoundDot);
ITrendline lowtrend = chart.getSeriesCollection().get(3).getTrendlines().add();
lowtrend.setName("3 个月挪动均匀最低价");
lowtrend.setType(TrendlineType.MovingAvg);
lowtrend.setPeriod(3);
lowtrend.getFormat().getLine().getColor().setRGB(Color.GetRed());
lowtrend.getFormat().getLine().setDashStyle(LineDashStyle.RoundDot);
}
5)返回 XLSX
最初,创立一个 Main 类,并增加相干办法作为整个程序的入口,右键执行程序后就能够取得最终的 Excel XLSX 文件。
public static void main(String[] args) {Workbook workbook = AnalysisCSV(CSV.getCsvData());
processWorkbook(workbook);
workbook.save("比特币月度数据.xlsx");
}
运行后果如下所示:
最初附上残缺的代码工程文件:https://gitee.com/GrapeCity/btc_-chart_-web-service
总结
以上就是在 Java 中以编程的形式将 CSV 转化为 Excel XLSX 文件的全过程,如果您想理解更多信息,欢送点击这篇参考资料拜访。
扩大链接:
轻松构建低代码工作流程:简化繁琐工作的利器
优化估算治理流程:Web 端实现预算编制的利器
如何在.NET 电子表格应用程序中创立流程图