核心思想在于操作文件dom遍历获取子节点去修改文件的样式
public static document load(String filename) {
document document = null;
try {
documentBuilderFactory factory = documentBuilderFactory.newInstance();
documentBuilder builder = factory.newdocumentBuilder();
document = builder.parse(new File(filename));
document.normalize();
} catch (Exception ex) {
ex.printStackTrace();
}
return document;
}
document document = load(fileName);
Node ureport = document.getdocumentElement();
if (ureport.hasChildNodes()) {
NodeList cells = ureport.getChildNodes();
for (int i = 0; i < cells.getLength(); i++) {
Node item = cells.item(i);
if ("cell".equals(item.getNodeName())) {
NamedNodeMap cellAttributes = item.getAttributes();
boolean flag = false;
String name = cellAttributes.getNamedItem("name").getNodevalue();
if (name.contains("1")) {
flag = true;
}
NodeList cellChilds = item.getChildNodes();
for (int k = 0; k < cellChilds.getLength(); k++) {
Node cellStyle = cellChilds.item(k);
if ("cell-style".equals(cellStyle.getNodeName())) {
NamedNodeMap cellStyleAttributes = cellStyle.getAttributes();
Node forecolor = cellStyleAttributes.getNamedItem("forecolor");
Node fontFamily = cellStyleAttributes.getNamedItem("font-family");
Node bgcolor = cellStyleAttributes.getNamedItem("bgcolor");
Node bold = cellStyleAttributes.getNamedItem("bold");
Node fontSize = cellStyleAttributes.getNamedItem("font-size");
Element cellStyleElement = (Element) cellStyle;
if (fontFamily == null) {
cellStyleElement.setAttribute("fontFamily","微软雅黑");
} else {
fontFamily.setNodevalue("微软雅黑");
}
if (fontSize == null) {
cellStyleElement.setAttribute("font-size","9");
} else {
fontSize.setNodevalue("9");
}
if (bold != null) {
cellStyleAttributes.removeNamedItem("bold");
}
if (flag) {
if (forecolor == null) {
cellStyleElement.setAttribute("forecolor","51,51,51");
} else {
forecolor.setNodevalue("51,51,51");
}
if (bgcolor == null) {
cellStyleElement.setAttribute("bgcolor","242,242,242");
} else {
bgcolor.setNodevalue("242,242,242");
}
} else {
if (forecolor == null) {
cellStyleElement.setAttribute("forecolor","0,0,0");
} else {
forecolor.setNodevalue("0,0,0");
}
if (bgcolor != null) {
cellStyleAttributes.removeNamedItem("bgcolor");
}
}
NodeList cellStyleChildNodes = cellStyle.getChildNodes();
for (int j =0;j < cellStyleChildNodes.getLength();j++) {
Node border = cellStyleChildNodes.item(j);
if (border.getNodeName().contains("border")) {
NamedNodeMap borderAttributes = border.getAttributes();
Node color = borderAttributes.getNamedItem("color");
Element borderElement = (Element) border;
if (color == null) {
borderElement.setAttribute("color","225,225,225");
} else {
color.setNodevalue("225,225,225");
}
}
}
}
}
}
}
}
public static boolean doc2XmlFile(document document, String filename) {
boolean flag = true;
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
//transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(new File(filename));
transformer.transform(source, result);
} catch (Exception ex) {
flag = false;
ex.printStackTrace();
}
return flag;
}