main
黄海 8 months ago
parent d5b5b0ab03
commit 8a0aa0abb9

@ -10,17 +10,36 @@ import java.io.File;
import java.util.*;
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 {
String xml = "D:\\dsWork\\YunNanDsBase\\src\\main\\java\\com\\dsideal\\base\\Tools\\Test\\Sample.xml";
//3、开始读取
// 创建 SAXReader 对象,读取 XML 文件
SAXReader reader = new SAXReader();
Document document = reader.read(new File(xml));
// 获取根元素
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"};//折线,柱状
@ -68,17 +87,8 @@ public class TestXml {
for (Element pt : yList) {
String idx = pt.attribute("idx").getValue();
String v = pt.element("v").getText();
// 保留两位小数
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
}
//保留两位小数的字符串
v = doubleWith2f(v);
//是不是有效的,存在的数据,因为有的数据是未填写的
if (!existsMap.containsKey(idx)) {
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();// 计算行数和列数
@ -111,9 +121,9 @@ public class TestXml {
column.add(x);
}
// 将当前列添加到结果列表中
transposed.add(column);
res.add(column);
}
//输出转置后的数据
ExcelKit.printTable(transposed);
ExcelKit.printTable(res);
}
}
Loading…
Cancel
Save