前言

Microsoft Excel的XLSX格局以及基于文本的CSV(逗号分隔值)格局,是数据交换中常见的文件格式。应用程序通过实现对这些格局的读写反对,能够显著晋升性能。在本文中,小编将为大家介绍如何借助葡萄城公司地Java API组件GrapeCity Documents for Excel(以下简称GcExcel)将CSV文件转化为XLSX 文件。

具体操作步骤如下:

  1. 创立我的项目(应用intelliJ IDEA创立一个新的Maven我的项目)
  2. 查问数据(应用AlphaVantage Web服务获取CSV格局的月度BTC-USD数据)
  3. 加载CSV
  4. 解决CSV(重新排列、创建表格并创立带有趋势线的图表)
  5. 返回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电子表格应用程序中创立流程图