📄 readxml.js
字号:
//加载路径为xmlFile的文件
function loadXMLFile(xmlFile)
{
var xmlDoc;
if(window.ActiveXObject)
{
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.load(xmlFile);
}
else if (document.implementation&&document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.load(xmlFile);
}
else
{
return null;
}
return xmlDoc;
}
var xmlDoc = 0;
//判断是否加载正确
function checkXMLDocObj(xmlFile)
{
xmlDoc = loadXMLFile(xmlFile);
if(xmlDoc==null)
{
alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
return null;
}
GetXTableStyles('Workbook/Styles');//取得表格的样式
GetXTableAttribute('Workbook/Worksheet');
}
//取得XML路径中的值
var xcelcount = 0 ;
var xrowcount = 0;
var xfullcol = 1;
var xfullrow = 1;
function GetXTableAttribute(xpath)
{
var worksheetobj = xmlDoc.getElementsByTagName(xpath)[0];//table/WorksheetOptions
if(worksheetobj == null){alert("文件打开错误!");return;}
var objs = worksheetobj.childNodes;
var table = objs[0];//
xcelcount = table.getAttribute('ss:ExpandedColumnCount');
xrowcount = table.getAttribute('ss:ExpandedRowCount');
//xfullcol = table.getAttribute('x:FullColumns');
//xfullrow = table.getAttribute('x:FullRows');
//xdefaultw = table.getAttribute('ss:DefaultColumnWidth');
//xdefauleh = table.getAttribute('ss:DefaultRowHeight');
GetXTablechileNode(table);
}
var AutoFitWidth = 0;
var AutoFitHeight = 0;
var tophtml = "";
var righthtml = "";
var lefthtml = "";
function GetXTablechileNode(xtableobj)
{
var xcols = xtableobj.getElementsByTagName("Column");
var xrows = xtableobj.getElementsByTagName("Row");
SetColWidth(xcols);
SetRowHeight(xrows);
//取得行和列的最大值
var currow = 0;
for(var i=0;i<xrows.length;i++)
{
var cells = xrows[i].getElementsByTagName("Cell");
var cur = 1;
var row = xrows[i].getAttribute("ss:Index");
if(row != null&&row != "")
{
currow = row;
}
else
{
currow++;
}
for(var j = 0;j<cells.length;j++)
{
var cellsobj = cells[j];
var cellindex = cellsobj.getAttribute("ss:Index");
var styid = cellsobj.getAttribute("ss:StyleID");
if(cellindex != null&&cellindex != "")
{
cur = cellindex;
}
var mergecol = cellsobj.getAttribute("ss:MergeAcross");
if(mergecol == null||mergecol == "")
{
mergecol = 0;
}
var mergerow = cellsobj.getAttribute("ss:MergeDown");
if(mergerow == null||mergerow == "")
{
mergerow = 0;
}
var srow = Number(currow);
var erow = Number(currow)+Number(mergerow);
var scol = cur;
var ecol = Number(cur) + Number(mergecol);
selected_area.xsrow = srow;
selected_area.xerow = erow;
selected_area.xscol = scol;
selected_area.xecol = ecol;
selected_area.readfile();
if(srow != erow||scol != ecol)
selected_area.unitTD();
var text = "";
try
{
text = cellsobj.childNodes[0].text;
}
catch(e){}
//2007-11-29号添加
//if(i == 22)safdas;
var myobj = tbs.get(srow+'-'+scol);
if(scol == 1)
{
//说明是第二列
tbobj.rows[myobj.row].cells[myobj.col].className = "mytd";
}
else
{
tbobj.rows[myobj.row].cells[myobj.col].className = "notd";
}
selected_area.sobj = tbobj.rows[myobj.row].cells[myobj.col];
var index = styleindex(styid);
if(index!=-1)
setstyle(index);
tbobj.rows[myobj.row].cells[myobj.col].children[0].innerText = text;
//j = ecol;
cur = ecol+1;
}
}
}
function chr(charcode)
{
return(String.fromCharCode(charcode));
}
function SetColWidth(xcols)
{
//var H = document.getElementById("toptable");
//var B = document.getElementById("tbobj");
var curcolnum = 1;
for(var n=0;n<xcols.length;n++)
{
var obj = xcols[n];
if(obj == null)return;
var colobj = obj.getAttribute("ss:Index");
if(colobj != null&&colobj != "")
{
curcolnum = colobj;
}
var width = xcols[n].getAttribute("ss:Width");
if(width==null)continue;
tbobj.rows(0).cells[curcolnum].style.width = width-1+'pt';
toptable.rows(0).cells[curcolnum].style.width = width+'pt';
//tbobj.rows(0).cells[curcolnum].style.width = parseFloat(width-1)*4/parseFloat(3);
//toptable.rows(0).cells[curcolnum].style.width = parseFloat(width)*4/parseFloat(3);
curcolnum++;
}
}
function SetRowHeight(xrows)
{
//var L = document.getElementById("lefttable");
//var B = document.getElementById("tbobj");
var currownum = 1;
for(var n=0;n<xrowcount;n++)
{
var obj = xrows[n];
if(obj == null)return;
var row = obj.getAttribute("ss:Index");
if(row != null&&row != "")
{
currownum = row;
}
else
{
currownum = Number(n)+Number(1);
}
var rowobj = obj.getAttribute("ss:Height");
if(rowobj==null)continue;
lefttable.rows(currownum-1).cells[0].style.height = rowobj+'pt';
tbobj.rows(currownum).cells[0].style.height = rowobj+'pt';
}
}
//****************************读取样式************************************
var Stylesobj = null;//样式列表对象
var stylelen = 0;
function GetXTableStyles(xpath)
{
Stylesobj = xmlDoc.getElementsByTagName(xpath)[0].childNodes;//得到Styles
if(Stylesobj == null){alert("读取样式出错!");return;}
stylelen = Stylesobj.length;
}
function styleindex(styid)
{
for(var i=0;i<stylelen;i++)
{
if(styid == Stylesobj[i].getAttribute("ss:ID"))
return i;
}
return -1;
}
function setstyle(index)
{
var megobj = Stylesobj[index].childNodes;
var attlen = megobj.length;//Style下面有多少个节点
for(var i=0;i<attlen;i++)
{
if(megobj[i].tagName == "Alignment")
{
var text = megobj[i].getAttribute("ss:Horizontal");
switch(text)
{
case "Center": mid();break;
case "Left": left();break;
case "Right": right();
}
}
else if(megobj[i].tagName == 'Borders')
{
var borders = megobj[i].childNodes;
var len = borders.length;
if(len == 4) {selected_area.drawNet();continue;}
for(var j=0;j<len;j++)
{
var position = borders[j].getAttribute("ss:Position");
switch(position)
{
case "Bottom":selected_area.drawBottomLine();break;
case "Top":selected_area.drawTopLine();break;
case "Left":selected_area.drawLeftLine();break;
case "Right":selected_area.drawRightLine();
}
}
}
else if(megobj[i].tagName == 'Font')
{
//字体
var text = megobj[i].getAttribute("ss:FontName");
if(text)
{
fontfamily2(text);
}
//字体
text = megobj[i].getAttribute("ss:Size");
if(text)
{
fontsize2(text);
}
//粗体
text = megobj[i].getAttribute("ss:Bold");
if(text)
{
cuti();
}
}
else if(megobj[i].tagName == 'NumberFormat')
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -