Basf_TCC7/HJGL/FineUIPro.Web/common/ReportPrint/js/Common.js

685 lines
23 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//实现报表打开的操作
function setInit(strTab)
{
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.SetPath('/'); //http://website/test/ceuser/ceuser.dat 能否访问到
var ret = obChinaExcel.Login("金财软件", "6c048396fdf663df323ad7d1dd6eff17", "安徽金财高新技术工程有限公司");
//alert(ret);
obChinaExcel.ReadHttpFile(strTab);
}
//实现报表数据录入提交操作
function SaveData()
{
var strData;
var obChinaExcel=document.getElementById('ChinaExcel');
strData = obChinaExcel.ExportSaveDBData();
document.form1.txtSaveData.value = strData;
if (document.form1.txtSaveData.value=="")
{
alert("ExportSaveDBData输出为空");
}
else
{
alert(document.form1.txtSaveData.value);
document.form1.submit();
}
}
//实现计算
function Calculate()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.DesignMode = false;
obChinaExcel.ReCalculate();
// obChinaExcel.FormProtect = true;
}
//页面加载显示报表
function OnLoad(strTab)
{
SetInit(strTab);
Calculate();
}
//实现报表自定义向导
function Wizard()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.UserFunctionGuide();
}
//返回最近一次计算之前的状态
function retDesgin()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.RestoreAfterCalculate();
}
//关于打印设置
function PrintSetup()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.OnPrintSetup();
}
//打印页面设置
function PrintpaperSet() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnPrintPaperSet();
}
function FileSave() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnFileSave();
}
//单元斜线设置
function SlashSet() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnSlashSet();
}
//打印文档
function FilePrint()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.OnFilePrint();
}
//打印预览
function Preview()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.OnFilePrintPreview();
}
//输出
function onFileSave()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.onFileSave();
}
// 剪切
function onCut() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnCut();
}
//复制
function onPaste() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnPaste();
}
// 粘贴
function onCopy() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnCopy();
}
//货币符号
function onCurrency() {
}
//设置单元样式
function OnSetCellShowStyle() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnSetCellShowStyle();
}
//设置每页打印的行数
function OnSetOnePrintPageDetailZoneRows() {
var obChinaExcel = document.getElementById('ChinaExcel');
nPageRows = obChinaExcel.GetOnePrintPageDetailZoneRows()
nRow = InputBox( "说明:打印时每页显示的行数,不包括表头和表尾页脚、页前脚的行数(如果为0行,则表示没有设置每页打印的行数,系统按缺省进行分页)。 请输入每页打印的行数:", "设置每页打印的行数", nPageRows )
if( nRow != "")
{
obChinaExcel.SetOnePrintPageDetailZoneRows = nRow;
}
}
//帮助
function Help()
{
var obChinaExcel=document.getElementById('ChinaExcel');
obChinaExcel.AboutBox();
}
//设置单元背景色
function onSetCellBkColor()
{
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnSetCellBkColor();
}
//保存报表
function onReportSave(reportId, reportName, ProjectId) {
obChinaExcel=document.getElementById('ChinaExcel');
var tabFile = obChinaExcel.SaveDataAsZipText();
var sendData = "reportId=" + reportId;
sendData += "&tabContent=" + encodeURIComponent(tabFile); //二进制需encodeURIComponent编码
sendData += "&reportName=" + reportName;
sendData += "&projectId=" + ProjectId;
req = Ajax();
req.onreadystatechange = myDeal;
req.open("POST", "SaveTabFile.aspx", "false");
req.setRequestHeader("content-length", sendData.length);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(sendData); //要POST的数据
obChinaExcel.SetModifiedFlag(false); //设置表格修改标识
}
function Ajax() {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e1) {
try {
req = new ActiveXObject("MSXML2.XMLHTTP");
} catch (e2) {
try {
req = new ActiveXObject("MSXML3.XMLHTTP");
} catch (e3) {
alert("创建Ajax失败" + e3);
}
}
}
} else {
alert("未能识别的浏览器");
}
return req;
}
function myDeal() {
if (req.readyState == 4) {
var ret = req.responseText;
if (ret != "") {
alert(ret);
}
}
}
function onFileOpen() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.OnFileOpen();
}
// 设置单元格的值
function SetCellValue() {
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.SetCellValue(1, 1, '您好');
obChinaExcel.Refresh();
}
// 给报表里设置的变量传值变量命名规则V_Name为变量名,如第一个变量为:V_Name1,第二个为V_Name2,以此类推)
function SetCellValUseVarName(varValue) {
var value = varValue.split("|");
var obChinaExcel = document.getElementById('ChinaExcel');
for (i = 0; i < value.length; i++) {
if (value[i] == 'NULL') {
obChinaExcel.SetCellValUseVarName('V_Name' + (parseInt(i) + 1), '');
}
else {
obChinaExcel.SetCellValUseVarName('V_Name' + (parseInt(i) + 1), value[i]);
}
}
obChinaExcel.ReCalculate();
obChinaExcel.Refresh();
}
// 替换数据源里的参数(相当于给参数传值)
function ReplaceParameter(replaceParameter) {
var obChinaExcel = document.getElementById('ChinaExcel');
var parameterValue = replaceParameter.split("|");
if (parameterValue.length > 1) {
for (i = 0; i < parameterValue.length; i++) {
if (parameterValue[i] == 'NULL') {
obChinaExcel.ReplaceStatScript("${参数" + (i + 1) + "}", "NULL", 1);
}
else {
obChinaExcel.ReplaceStatScript("${参数" + (i + 1) + "}", "'" + parameterValue[i] + "'", 1);
}
}
}
else {
obChinaExcel.ReplaceStatScript("${参数1}", "'" + replaceParameter + "'", 1);
}
}
//function ReplaceParameter(replaceParameter) {
// var obChinaExcel = document.getElementById('ChinaExcel');
// obChinaExcel.ReplaceStatScript("${参数1}", replaceParameter, 1);
//}
//计算报表
function CalculateTab(str) //计算报表
{
//ReplaceParameter(strParam1);
//var cmdCalculate=document.getElementById('cmdCalculate');
//GetData();
var obChinaExcel= document.getElementById('ChinaExcel');
//var obChinaExcel= ChinaExcel;
//var obChinaExcel= window.parent.lefttree.document.getElementById('ChinaExcel');
if (obChinaExcel.DesignMode) {
obChinaExcel.SetCanRefresh(false);
obChinaExcel.RestoreAfterCalculate(); //会重新加载计算之前的报表模板,确保可以重新计算
var strStatScript = obChinaExcel.GetStatScript(1);
var dname = new Array(); //数据源名称
var dtype = new Array(); //数据源类型
var dSQL1 = new Array();
var dSQL2 = new Array();
var strData = new Array(); //数据内容
var dcount = 0; //数据源个数
var i, j;
if (strStatScript.length == 0) {
if (window.confirm('该报表没有统计脚本,继续计算请选[Yes],否则选[No]')) {
obChinaExcel.SetOnlyShowTipMessage(true);
obChinaExcel.ReCalculate();
obChinaExcel.SetOnlyShowTipMessage(false);
}
}
else {
var strQueryParameter = strQueryParameterUrl();
for (i = 1; i < strStatScript.length; i++)//把统计脚本中的数据源类型、名称等存入数组
{
dtype[i] = strStatScript.substring(strStatScript.indexOf("<cmd>") + ("<cmd>").length, strStatScript.indexOf("</cmd>")); //数据条数
dname[i] = strStatScript.substring(strStatScript.indexOf("<dname>") + ("<dname>").length, strStatScript.indexOf("</dname>")); //字段个数
dSQL1[i] = strStatScript.substring(strStatScript.indexOf("<sql>") + ("<sql>").length, strStatScript.indexOf("</sql>"));
if (dtype[i] == 2)//主从报表有第二条SQL
{
dSQL2[i] = strStatScript.substring(strStatScript.indexOf("<sql2>") + ("<sql2>").length, strStatScript.indexOf("</sql2>"));
}
strStatScript = strStatScript.substr(strStatScript.indexOf("</data>") + ("</data>").length);
if (strStatScript.indexOf("<cmd>") < 0) {
dcount = i;
break;
}
}
var url;
for (i = 1; i <= dcount; i++)//根据数据源名重新设置取数方式
{
strData[i] = "";
//by ps 2011-8-16 没有变参
if (dSQL1[i].indexOf("${") == -1 && dSQL1[i].indexOf("${") == -1) {
url = "CalculateChinaEx.aspx?func=GetSqlResult&dtype=" + dtype[i] + "&sql=" + encodeURIComponent(dSQL1[i]) + "&sql2=" + encodeURIComponent(dSQL2[i]) + "&reportId=" + str;
} else {
url = "CalculateChinaEx.aspx?func=GetSqlResult&dtype=" + dtype[i] + "&sql=" + encodeURIComponent(dSQL1[i]) + "&sql2=" + encodeURIComponent(dSQL2[i]) + "&reportId=" + str + strQueryParameter;
}
obChinaExcel.SetStatDataSource1(url, 2, dname[i]);
}
obChinaExcel.SetOnlyShowTipMessage(true);
obChinaExcel.ReCalculate();
obChinaExcel.SetOnlyShowTipMessage(false);
}
obChinaExcel.SetCanRefresh(true);
obChinaExcel.Refresh();
}
}
function CalculateTabPaging(str, str2) //计算报表
{
var obChinaExcel = document.getElementById('ChinaExcel');
obChinaExcel.SetCanRefresh(false);
var pagesize = null;
if (str2 == "库存查询每页显示固定行") {
pagesize = document.getElementById("Text3").value;
}
else {
pagesize = 20;
}
var pageIndex = document.getElementById("cpage").value;
obChinaExcel.RestoreAfterCalculate(); //会重新加载计算之前的报表模板,确保可以重新计算
var strStatScript = obChinaExcel.GetStatScript(1);
//alert(strStatScript);
var dname = new Array(); //数据源名称
var dtype = new Array(); //数据源类型
var dSQL1 = new Array();
var dSQL2 = new Array();
var strData = new Array(); //数据内容
var dcount = 0; //数据源个数
var i, j;
if (strStatScript.length == 0) {
if (window.confirm('该报表没有统计脚本,继续计算请选[Yes],否则选[No]')) {
obChinaExcel.SetOnlyShowTipMessage(true);
obChinaExcel.ReCalculate();
obChinaExcel.SetOnlyShowTipMessage(false);
}
}
else {
var strQueryParameter = strQueryParameterUrl();
for (i = 1; i < strStatScript.length; i++)//把统计脚本中的数据源类型、名称等存入数组
{
dtype[i] = strStatScript.substring(strStatScript.indexOf("<cmd>") + ("<cmd>").length, strStatScript.indexOf("</cmd>")); //数据条数
dname[i] = strStatScript.substring(strStatScript.indexOf("<dname>") + ("<dname>").length, strStatScript.indexOf("</dname>")); //字段个数
dSQL1[i] = strStatScript.substring(strStatScript.indexOf("<sql>") + ("<sql>").length, strStatScript.indexOf("</sql>"));
if (dtype[i] == 2)//主从报表有第二条SQL
{
dSQL2[i] = strStatScript.substring(strStatScript.indexOf("<sql2>") + ("<sql2>").length, strStatScript.indexOf("</sql2>"));
}
strStatScript = strStatScript.substr(strStatScript.indexOf("</data>") + ("</data>").length);
if (strStatScript.indexOf("<cmd>") < 0) {
dcount = i;
break;
}
}
var url;
for (i = 1; i <= dcount; i++)//根据数据源名重新设置取数方式
{
strData[i] = "";
//没有变参
if (dSQL1[i].indexOf("${") == -1 && dSQL1[i].indexOf("${") == -1) {
url = "CalculateChinaExPaging.aspx?func=GetSqlResult&dtype=" + dtype[i] + "&sql=" + encodeURIComponent(dSQL1[i]) + "&sql2=" + encodeURIComponent(dSQL2[i]) + "&pageSize=" + pagesize + "&pageIndex=" + pageIndex + "&nodeid=" + str;
} else {
url = "CalculateChinaExPaging.aspx?func=GetSqlResult&dtype=" + dtype[i] + "&sql=" + encodeURIComponent(dSQL1[i]) + "&sql2=" + encodeURIComponent(dSQL2[i]) + "&pageSize=" + pagesize + "&pageIndex=" + pageIndex + "&nodeid=" + str + strQueryParameter;
}
obChinaExcel.SetStatDataSource1(url, 2, dname[i]);
}
obChinaExcel.SetOnlyShowTipMessage(true);
obChinaExcel.ReCalculate();
obChinaExcel.SetOnlyShowTipMessage(false);
}
obChinaExcel.SetCanRefresh(true);
obChinaExcel.Refresh();
}
function strQueryParameterUrl() {
var i, j, nCount, bSameName;
var strTempA = "";
var strTempB = "";
var dParam = new Array(); //变参数组
nCount = 0;
var obChinaExcel = document.getElementById('ChinaExcel');
for (i = 1; i <= obChinaExcel.GetMaxRow(); i++) {
for (j = 1; j <= obChinaExcel.GetMaxCol(); j++) {
strTempA = obChinaExcel.GetCellQueryParameter(i, j);
if (strTempA != "") {
bSameName = false;
for (k = 1; k <= nCount; k++) {
if (dParam[k] == strTempA) {
bSameName = true;
break;
}
}
if (bSameName == false) {
nCount++;
dParam[nCount] = strTempA;
}
}
}
}
for (k = 1; k <= nCount; k++) {
strTempB = strTempB + "&" + encodeURIComponent(dParam[k]) + "=" + "${" + dParam[k] + "}";
}
return strTempB;
}
// 自定义字段(指数据源字段)
function DefineField(strFieldName,strFieldName1) {
var obChinaExcel = document.getElementById('ChinaExcel');
var strFieldDefine;
strFieldDefine = "<data><cmd>6</cmd><stattype>1</stattype><type>2</type><fieldname>" + strFieldName + "</fieldname><insertflag>0</insertflag><showcontent>1</showcontent></data>";
obChinaExcel.SetCellStatDefine(obChinaExcel.Row, obChinaExcel.Col, strFieldDefine);
// strFieldDefine = "<data><cmd>6</cmd><stattype>1</stattype><type>2</type><fieldname>" + strFieldName1 + "</fieldname><insertflag>0</insertflag><showcontent>1</showcontent></data>";
// obChinaExcel.SetCellStatDefine(obChinaExcel.Row, obChinaExcel.Col+1, strFieldDefine);
obChinaExcel.Refresh();
}
function onCbClickEvent(obj, fNoEvent) {
if (null != event) {
event.cancelBubble = true;
}
// Regular push button
onCbClick(obj.id, true);
return (false);
}
function onCbClick(szCommand, fState) {
//开始命令
switch (szCommand.toUpperCase()) {
case "CMDFILENEW": //新建
mnuFileNew_click();
break;
case "CMDFILEOPEN": //打开文件
mnuFileOpen_click();
break;
case "CMDEXCELFILEOPEN": //打开EXCEL文件
mnuExcelFileOpen_click();
break;
case "CMDWEBFILEOPEN": //打开远程文件
mnuFileWebOpen_click();
break;
case "CMDWEBXMLFILEOPEN": //打开远程XML文件
mnuXMLFileWebOpen_click();
break;
case "CMDSAVEDATAASSTRING": //输出为字符串
mnuSaveDataAsString_click();
break;
case "CMDFILESAVE": //保存文档
SaveTabFile1(); //保存到服务器 tcf
break;
case "CMDFILESAVEAS": //另存为
mnuFileSaveAs_click();
break;
case "CMDFILEPRINTPAPERSET": //打印页设置文档
mnuPrintPaperSet_click();
break;
case "CMDFILEPRINTSETUP": //打印设置文档
mnuFilePrintSetup_click();
break;
case "CMDFILEPRINT": //打印文档
mnuFilePrint_click();
break;
case "CMDFILEPRINTPREVIEW": //打印预览文档
mnuFilePrintPreview_click();
break;
case "CMDEDITCUT": //剪切
ChinaExcel.OnCut();
//mnuEditCut_click();
break;
case "CMDEDITCOPY": //复制
ChinaExcel.OnCopy();
//mnuEditCopy_click();
break;
case "CMDEDITPASTE": //粘贴
ChinaExcel.OnPaste();
//mnuEditPaste_click();
break;
case "CMDEDITFIND": //查找替换
mnuEditFind_click();
break;
case "CMDEDITUNDO": //撤消
//mnuEditUndo_click();
break;
case "CMDEDITREDO": //重做
//mnuEditRedo_click();
break;
case "CMDSHAPE3D": //设置单元3维显示
mnuShape3D_click();
break;
case "CMDROWLABEL": //设置行表头
mnuRowLabel_click();
break;
case "CMDCOLLABEL": //设置列表头
mnuColLabel_click();
break;
case "CMDSTATWIZARD": //
ChinaExcel.OnStatWebWizard();
break;
case "CMDSORTDESCENDING": //降序排序
cmdSortDescending_click();
break;
case "CMDFUNCTIONLIST": //函数列表
mnuFunctionList_click();
break;
case "CMDUSERFUNCTIONGUIDE": //自定义函数向导
mnuUserFunctionGuide_click();
break;
case "CMDFORMULASUMH": //水平求和
cmdFormulaSumH_click();
break;
case "CMDFORMULASUMV": //垂直求和
cmdFormulaSumV_click();
break;
case "CMDFORMULASUMHV": //双向求和
cmdFormulaSumHV_click();
break;
case "CMDCHARTWZD": //图表向导
mnuDataWzdChart_click();
break;
case "CMDINSERTPIC": //插入图片
mnuFormatInsertPic_click();
break;
case "CMDINSERTCELLPIC": //插入单元图片
mnuFormatInsertCellPic_click();
break;
case "CMDHYPERLINK": //超级链接
mnuEditHyperlink_click();
break;
case "CMDFINANCEHEADERTYPE": //财务表头
mnuFinanceHeader_click();
break;
case "CMDFINANCETYPE": //财务表览
mnuFinance_click();
break;
case "CMDSHOWGRIDLINE": //显示/隐藏背景表格线
with (ChinaExcel) {
ShowGrid = !ShowGrid;
}
break;
case "CMDSHOWHEADER": //显示/隐藏系统表头
with (ChinaExcel) {
ShowHeader = !ShowHeader;
}
break;
//***********************************************************
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
case "CMDBOLD": //设置粗体
cmdBold_click();
break;
case "CMDITALIC": //设置斜体
cmdItalic_click();
break;
case "CMDUNDERLINE": //设置下划线
cmdUnderline_click();
break;
case "CMDBACKCOLOR": //设置背景色
cmdBackColor_click();
break;
case "CMDFORECOLOR": //设置前景色
cmdForeColor_click();
break;
case "CMDWORDWRAP": //设置自动折行
cmdWordWrap_click();
break;
case "CMDALIGNLEFT": //左对齐
cmdAlignLeft_click();
break;
case "CMDALIGNCENTER": //居中对齐
cmdAlignCenter_click();
break;
case "CMDALIGNRIGHT": //居右对齐
cmdAlignRight_click();
break;
case "CMDALIGNTOP": //居上对齐
cmdAlignTop_click();
break;
case "CMDALIGNMIDDLE": //垂直居中对齐
cmdAlignMiddle_click();
break;
case "CMDALIGNBOTTOM": //居下对齐
cmdAlignBottom_click();
break;
case "CMDDRAWBORDER": //画框线
cmdDrawBorder_click();
break;
case "CMDERASEBORDER": //抹框线
cmdEraseBorder_click();
break;
case "CMDCURRENCY": //货币符号
cmdCurrency_click();
break;
case "CMDPERCENT": //百分号
cmdPercent_click();
break;
case "CMDTHOUSAND": //千分位
cmdThousand_click();
break;
case "CMDABOUT": //关于超级报表插件
cmdAbout_click();
break;
//***********************************************************
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
case "CMDINSERTCOL": //插入列
cmdInsertCol_click();
break;
case "CMDINSERTROW": //插入行
cmdInsertRow_click();
break;
case "CMDINSERTCELL": //插入单元
cmdInsertCell_click();
break;
case "CMDDELETECELL": //删除单元
cmdDeleteCell_click();
break;
case "CMDDELETECOL": //删除列
cmdDeleteCol_click();
break;
case "CMDDELETEROW": //删除行
cmdDeleteRow_click();
break;
case "CMDMAXROWCOL": //设置表格行列数
mnuMaxRowCol_click();
break;
case "CMDMERGECELL": //合并单元格
mnuFormatMergeCell_click();
break;
case "CMDUNMERGECELL": //取消合并单元格
mnuFormatUnMergeCell_click();
break;
case "CMDMERGEROW": //行组合
cmdMergeRow_click();
break;
case "CMDMERGECOL": //列组合
cmdMergeCol_click();
break;
case "CMDRECALCALL": //重算全表
mnuFormulaReCalc_click();
break;
case "CMDFORMPROTECT": //整表保护
mnuFormProtect_click();
break;
case "CMDREADONLY": //单元格只读
mnuReadOnly_click();
break;
case "SETONEPRINTPAGEDETAILZONEROWS": //设置每页打印的行数
mnuSetOnePrintPageDetailZoneRows_click();
break;
}
}