main
黄海 8 months ago
parent d5b5b0ab03
commit 8a0aa0abb9

@ -10,17 +10,36 @@ import java.io.File;
import java.util.*; import java.util.*;
public class TestXml { public class TestXml {
/**
*
*
* @param v
* @return
*/
public static String doubleWith2f(String v) {
// 保留两位小数
try {
double d = Double.parseDouble(v);
if (d == (int) d) {
v = String.valueOf((int) d);
} else {
v = String.format("%.2f", d);
}
} catch (Exception err) {
//do nothing
}
return v;
}
public static void main(String[] args) throws DocumentException { public static void main(String[] args) throws DocumentException {
String xml = "D:\\dsWork\\YunNanDsBase\\src\\main\\java\\com\\dsideal\\base\\Tools\\Test\\Sample.xml"; String xml = "D:\\dsWork\\YunNanDsBase\\src\\main\\java\\com\\dsideal\\base\\Tools\\Test\\Sample.xml";
//3、开始读取
// 创建 SAXReader 对象,读取 XML 文件 // 创建 SAXReader 对象,读取 XML 文件
SAXReader reader = new SAXReader(); SAXReader reader = new SAXReader();
Document document = reader.read(new File(xml)); Document document = reader.read(new File(xml));
// 获取根元素 // 获取根元素
Element root = document.getRootElement(); Element root = document.getRootElement();
//折线图
//将xml用IDEA打开搜索关键的数据值然后右键查看XPATH完整路径可以获取到下面的路径
///c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser/c:cat/c:numRef/c:numCache/c:pt/c:v
//声明一个数组,图表的所有类型 //声明一个数组,图表的所有类型
String[] CHART_TYPES = {"lineChart", "barChart"};//折线,柱状 String[] CHART_TYPES = {"lineChart", "barChart"};//折线,柱状
@ -68,17 +87,8 @@ public class TestXml {
for (Element pt : yList) { for (Element pt : yList) {
String idx = pt.attribute("idx").getValue(); String idx = pt.attribute("idx").getValue();
String v = pt.element("v").getText(); String v = pt.element("v").getText();
// 保留两位小数 //保留两位小数的字符串
try { v = doubleWith2f(v);
double d = Double.parseDouble(v);
if (d == (int) d) {
v = String.valueOf((int) d);
} else {
v = String.format("%.2f", d);
}
} catch (Exception err) {
//do nothing
}
//是不是有效的,存在的数据,因为有的数据是未填写的 //是不是有效的,存在的数据,因为有的数据是未填写的
if (!existsMap.containsKey(idx)) { if (!existsMap.containsKey(idx)) {
existsMap.put(idx, v); existsMap.put(idx, v);
@ -96,7 +106,7 @@ public class TestXml {
} }
//下面要实现行与列的转置 //下面要实现行与列的转置
// 创建一个一维列表,用于存储转换后的列 // 创建一个一维列表,用于存储转换后的列
List<List<String>> transposed = new ArrayList<>(); List<List<String>> res = new ArrayList<>();
//上面生成的数据格式需要行转列,横坐标是年份,纵坐标是数据 //上面生成的数据格式需要行转列,横坐标是年份,纵坐标是数据
int rowCount = tList.size();// 计算行数和列数 int rowCount = tList.size();// 计算行数和列数
@ -111,9 +121,9 @@ public class TestXml {
column.add(x); column.add(x);
} }
// 将当前列添加到结果列表中 // 将当前列添加到结果列表中
transposed.add(column); res.add(column);
} }
//输出转置后的数据 //输出转置后的数据
ExcelKit.printTable(transposed); ExcelKit.printTable(res);
} }
} }
Loading…
Cancel
Save