导出EXCEL时,合并单元格时如果我用
xlSheet1.Range(xlSheet1.Cells(i, 10), xlSheet1.Cells(i, 11)).Merge(True)会出错,但如果我将其中的i直接换成数字就没问题了,这是怎么回事啊,请问怎么解决啊??
xlSheet1.Range(xlSheet1.Cells(i, 10), xlSheet1.Cells(i, 11)).Merge(True)会出错,但如果我将其中的i直接换成数字就没问题了,这是怎么回事啊,请问怎么解决啊??
function JsOutPutExcel(btn,TabId,strCols,sTitle,sHeader,sFooter)
{
btn=document.getElementById(btn);
btn.style.cursor = "wait";
event.returnValue = false;
var tab = document.getElementById(TabId);
// alert("OK");
if(tab==null)
{
alert("缺少表格对象");
btn.style.cursor = "hand";
return;
}var t = tab.firstChild;
var rows = t.childNodes.length;
// alert(t.nodeName); //test
//alert(rows);
//总列数
var tds = t.childNodes[0].childNodes.length;
var cols = 0;//合并的列数
for(var i=0;i<tds;i++){
var td = t.childNodes[0].childNodes[i];
if(parseInt(td.colSpan)>1){
cols += parseInt(td.colSpan);
}
else{
cols++;
}
}
/////////////////////////////创建excel文档
var oXL;
try{
oXL = new ActiveXObject("Excel.Application");
}catch(e){
alert("请确认已经安装了Excel并允许运行Excel!");
btn.style.cursor = "hand";
return;
}
oXL.Workbooks.Add();
var obook = oXL.ActiveWorkBook;
var osheets = obook.Worksheets;
var osheet = obook.Sheets(1);
var xlrow = 1; //添加标题
if((sTitle == "") || (typeof(sTitle)=="undefined") || (sTitle==null)){
// var t_tdHeadc = document.getElementById("tdHeadc");
// if(t_tdHeadc != null){
// sTitle = t_tdHeadc.innerText;
// var sk = sTitle.lastIndexOf("-->")+3;
// sTitle = sTitle.substring(sk);
// }
}
osheet.Cells(1, 1) = "数据导出标题";
osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列
oXL.Selection.HorizontalAlignment = 3; //居中
oXL.Selection.MergeCells = true;
xlrow++; //小标题
if((sHeader == "") || (typeof(sHeader)=="undefined") || (sHeader==null)){
sHeader = "";
}
if(sHeader != ""){
osheet.Cells(2, 1) = "设置小标题";
osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列
//oXL.Selection.HorizontalAlignment = 3; //居中
oXL.Selection.MergeCells = true;
xlrow++;
}
strCols = ","+strCols+",";//开始序列号
var aRowSpans = new Array();
for(var i=0;i<cols;i++){
aRowSpans[i] = 1;
}
var isProgressErr = false;
for(var i = 0; i < rows; i++){
//btn.value = i;
if(!isProgressErr){
try{
win.m_pub_wzs_progress_show(rows,i+1);
}
catch(e){
isProgressErr = true;
}
}
var row = t.childNodes[i];
var xlcol =0;
var viwCol = -1; //所在表格的位置,指显示位置,如果有行合并时,会与列索引不一致
var colInx = -1;
var colSpans = 1;
for(var h = 0; h < cols; h++){
if(aRowSpans[h]>1){
xlcol++;
aRowSpans[h]--;
viwCol++;
continue;
}
else{
colInx++;
}
// alert("xlcol"+xlcol);
// alert("viwCol"+viwCol);
// alert("colInx"+colInx);
// alert("colSpans"+colSpans);
// alert("row"+row);
var td = t.childNodes[i].childNodes[colInx];
if(td == null) continue;
colSpans = td.colSpan;
var rowSpan = td.rowSpan;
if(isNaN(rowSpan)) rowSpan = 1;
for(var k=0;k<td.colSpan;k++){
viwCol++;
xlcol++;
aRowSpans[viwCol] = rowSpan;
}
h+=td.colSpan-1; //跳过合并列
if(td.className=="hideNode"){
xlcol--;
continue;
}
var s = "";
if(td.hasChildNodes() && td.firstChild.nodeName.toLowerCase()=="input"){
if(td.firstChild.type.toLowerCase()=="text"){
s = td.firstChild.value;
}
else if(td.firstChild.type.toLowerCase()=="radio"){ //如果是单选框, 遍历该框所有单选框,找到选择的值
for(var k=0;k<td.childNodes.length;k++){
var cn = td.childNodes[k];
if(cn.nodeName.toLowerCase()=="input" && cn.type.toLowerCase() == "radio" && cn.checked){
s = cn.value;
break;
}
}
}
}
else{
s = td.innerText;
}
if(strCols.indexOf("," + (xlcol-1) + ",")!=-1){
osheet.Cells(xlrow,xlcol).NumberFormatLocal = '@';
}
if(td.rowSpan>1 || td.colSpan>1){
osheet.range(osheet.cells(xlrow,xlcol),osheet.cells(xlrow-1+td.rowSpan, xlcol-td.colSpan+1)).Select();
oXL.Selection.MergeCells = true;
osheet.Cells(xlrow,xlcol).HorizontalAlignment = 3;
//osheet.cells(i+td.rowSpan, xlcol-td.colSpan+1).value = s;
osheet.Cells(xlrow,xlcol-td.colSpan+1).value = s;//m_splitLen(s,30,'\r\n');
}else{
osheet.Cells(xlrow,xlcol).value = s;//m_splitLen(s,30,'\r\n');
}
}
xlrow++;
} //添加表尾
if((sFooter == "") || (typeof(sFooter)=="undefined") || (sFooter==null)){
sFooter = "";
}
var d = new Date();
var sUser = "";
if((window.parent != null) && (window.parent.parent != null)){
try{
sUser = window.parent.parent.bottomFrame.document.getElementById("labUser").innerText.replace("用户:","").replace(/ /g,"");
}
catch(ex){
}
}
var sFooterDefault = " 制表人:" + sUser + " 制表时间:" + d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() + " ";
osheet.Cells(xlrow, 1) = sFooterDefault + sFooter;
osheet.Range(osheet.Cells(xlrow, 1),osheet.Cells(xlrow,cols)).Select(); //选择该列//oXL.Selection.HorizontalAlignment = 4; //居中
oXL.Selection.MergeCells = true;
osheet.Range(osheet.Cells(1, 1),osheet.Cells(1,1)).Select(); //选择第一个单元格列
osheet.Columns.AutoFit(); //自动列宽
for(var i=1;i<xlrow;i++){
osheet.Rows(i).RowHeight = osheet.Rows(i).RowHeight + 6; //自动大小后上下无边距,需要增加高度,要不太挤。
}
if(!isProgressErr){ //关闭进度条
win.close();
}
oXL.Visible = true;
oXL.UserControl = true;
oXL = null;
obook = null;
osheets = null;
osheet = null;
btn.style.cursor = "hand";
}
请问下各位,这个怎么搞??
//仅供参考
range = worksheet.get_Range("A1", "B2");
range.Merge(Missing.Value);
range.Font.Bold = true;
range.Font.Size = 16;
range.Value2 = "Test";
http://blog.csdn.net/luckisok/archive/2009/10/07/4638834.aspx你的i是不是从0开始的?