如何生成html格式的报告

socketraw 2003-04-16 04:29:26
需生成格式丰富的报告
哪里有这方面的资料?谢谢!!
最好有源代码类
...全文
307 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuicai 2003-06-05
  • 打赏
  • 举报
回复
使用Xslt样式,输出为html,输入为xml

用xml形式做数据就容易多了,而且改了xslt就有不同的效果,可以定制

主程序又不要改的

不过你又得专门搞个动态匹配的程序(可以以后在用啊)让他们工作。
syl08341 2003-05-30
  • 打赏
  • 举报
回复
look
BlueSnow 2003-05-30
  • 打赏
  • 举报
回复
......略......
//////////////////////////////////////////////////////////////////////// if ( ! fileTableTemplate.Open( "C:\\Table.htm" , CFile::modeReadWrite ) )
{
MessageBox("模板文件打开失败!");
return;
}
if ( fileTableHtml.Open(
"C:\\TableHtml.htm",CFile::modeCreate|CFile::modeWrite|CFile::typeText ) == 0 )
{
MessageBox("模板文件建立失败!");
return;
}
//////////////////////////////////////////////////////////////////////////////////
// 标题开始
fileTableTemplate.ReadString( strDataLine );
strTableNameStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
// 标题结束
fileTableTemplate.ReadString( strDataLine );
strTableNameEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
// 表头开始
fileTableTemplate.ReadString( strDataLine );
strTableTitleStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
// 表头结束
fileTableTemplate.ReadString( strDataLine );
strTableTitleEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
// 表行开始
fileTableTemplate.ReadString( strDataLine );
strTableRowStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
// 表行结束
fileTableTemplate.ReadString( strDataLine );
strTableRowEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
// 表列开始
fileTableTemplate.ReadString( strDataLine );
strTableColStart = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) ;
// 表列结束
fileTableTemplate.ReadString( strDataLine );
strTableColEnd = strDataLine.Mid( 24 , strDataLine.GetLength() - 27 ) + "\n";
//////////////////////////////////////////////////////////////////////////////////
while ( fileTableTemplate.ReadString( strDataLine ) )
{
nFind = 0 ;
if ( strDataLine.IsEmpty() ) continue;
strDataLine = strDataLine + "\n";
fileTableHtml.WriteString( strDataLine );
//////////////////////////////////////////////////////////////////////////////
if ( strDataLine == "<!--BlueSnow:标题-->\n" )
{
strNewDataLine = strTableNameStart + "统计报表" + strTableNameEnd;
fileTableHtml.WriteString(strNewDataLine);
}
//////////////////////////////////////////////////////////////////////////////
if ( strDataLine == "<!--BlueSnow:表头-->\n" )
{
strNewDataLine = strTableTitleStart + m_strScopeName + "不同项目方法,实验室数及所占比例" + strTableTitleEnd;
fileTableHtml.WriteString(strNewDataLine);
}
//////////////////////////////////////////////////////////////////////////////
if ( strDataLine == "<!--BlueSnow:表格-->\n" )
{
//////////////////////////////////////////////////////////////////////////
// 小行字
for ( int i = 0; i < m_strArrayBatchID.GetSize(); i++)
{
strTemp = strTemp + m_strArrayBatchID.GetAt(i) + ";";
}
fileTableHtml.WriteString("批号:" + strTemp );
//////////////////////////////////////////////////////////////////////////
// 表格题头
strNewDataLine = strTableColStart + "项目" + strTableColEnd;
fileTableHtml.WriteString(strNewDataLine);
strNewDataLine = strTableColStart + "批号" + strTableColEnd;
fileTableHtml.WriteString(strNewDataLine);
strNewDataLine = strTableColStart + "方法" + strTableColEnd;
fileTableHtml.WriteString(strNewDataLine);
strNewDataLine = strTableColStart + "实验室数" + strTableColEnd;
fileTableHtml.WriteString(strNewDataLine);
strNewDataLine = strTableColStart + "所占比例(%)" + strTableColEnd;
fileTableHtml.WriteString(strNewDataLine);
//////////////////////////////////////////////////////////////////////////
......略......
BlueSnow 2003-05-30
  • 打赏
  • 举报
回复
这是最简单的模板

<!--BlueSnow:标题开始 = <title>-->
<!--BlueSnow:标题结束 = </title>-->
<!--BlueSnow:表头开始 = <p align="center" class="Title">-->
<!--BlueSnow:表头结束 = </p>-->
<!--BlueSnow:表行开始 = <tr>-->
<!--BlueSnow:表行结束 = </tr>-->
<!--BlueSnow:表列开始 = <td align="center" valign="middle">-->
<!--BlueSnow:表列结束 = </td>-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--BlueSnow:标题-->

<style type="text/css">
<!--
.Title {
font-family: "宋体_GB2312";
font-size: 24px;
font-weight: bold;
color: #000000;
}
-->
</style>
</head>

<body>
<!---->
<!--BlueSnow:表头-->

<table width="100%" border="1" cellpadding="1" cellspacing="1">
<!--BlueSnow:表格-->

</table>
</body>
</html>
BlueSnow 2003-05-30
  • 打赏
  • 举报
回复
我用过一种方法.

首先做一个网页模板[就是空的Html表格]
在网页前面用注释标上生成表格的Html语句.
然后用VC读这个文件,再写入一个新文件 就可以生成一个Htm表格文件.

虽然笨一点,却很好用[可以在模板中自定义任何格式,生成的报表可以被Excel等直接读取],很方便又不用任何控件. 也不是很费时间. ^_^
shilong 2003-05-20
  • 打赏
  • 举报
回复
生成HTML表格的程序
http:\\5inet.cn\web\silverplume\temp\html.rar
蒋晟 2003-05-20
  • 打赏
  • 举报
回复
水晶报表
socketraw 2003-04-16
  • 打赏
  • 举报
回复
有没有类可以生成格式比较丰富的报告,呵呵。。
醉马不肖 2003-04-16
  • 打赏
  • 举报
回复
数据一xml生成
表现用xslt,这样可以作到动态
alfwolf 2003-04-16
  • 打赏
  • 举报
回复
呵呵,我手工写的如下:
CString path;
char filter[] = "Web Files(*.htm,*.html) | *.htm;*.html||";
CFileDialog fd(FALSE,".htm",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,filter,NULL);
if(fd.DoModal() == IDOK)
{
path = fd.GetPathName();
}

CString ips,ipe;
m_ipstart.GetWindowText(ips);
m_ipend.GetWindowText(ipe);

CStdioFile file;
if(file.Open(path, CFile::modeCreate|CFile::modeWrite))
{
CString temp;
file.Write("",0);
file.WriteString("<html>\n<head>\n<title>网络扫描结果(ALF MODERN STUDIO)</title>\n</head>\n");
file.WriteString("<body>\n<p><font size=4 face=宋体><b>网络扫描结果</b></font></p>\n");
temp.Format("<p><font face=宋体 size=2>(从 %s 到 %s )</font></p>\n",ips,ipe);
file.WriteString(temp);
file.WriteString("<table border=1 width=100% cellspacing=0 bordercolor=#C0C0C0>\n<tr>\n");
file.WriteString("<td width=25% bgcolor=#E8E8E8><font size=2>IP地址</font></td>\n");
file.WriteString("<td width=35% bgcolor=#E8E8E8><font size=2>机器名称</font></td>\n");
file.WriteString("<td width=30% bgcolor=#E8E8E8><font size=2>MAC地址</font></td>\n");
file.WriteString("<td width=10% bgcolor=#E8E8E8><font size=2>状态</font></td>\n</tr>\n");

for(int i=0;i<ItemCount;i++)
{
file.WriteString("<tr>\n");
if(m_list.GetItemText(i,0) != "")
{
temp.Format("<td width=25%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,0));
}
else
{
temp.Format("<td width=25%% bgcolor=#FFFFFF><font size=2> </font></td>\n");
}
file.WriteString(temp);
if(m_list.GetItemText(i,1) != "")
{
temp.Format("<td width=35%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,1));
}
else
{
temp.Format("<td width=35%% bgcolor=#FFFFFF><font size=2> </font></td>\n");
}
file.WriteString(temp);
if(m_list.GetItemText(i,2) != "")
{
temp.Format("<td width=30%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,2));
}
else
{
temp.Format("<td width=30%% bgcolor=#FFFFFF><font size=2> </font></td>\n");
}
file.WriteString(temp);
if(m_list.GetItemText(i,3) != "")
{
temp.Format("<td width=10%% bgcolor=#FFFFFF><font size=2> %s</font></td>\n",m_list.GetItemText(i,3));
}
else
{
temp.Format("<td width=10%% bgcolor=#FFFFFF><font size=2> </font></td>\n");
}
file.WriteString(temp);
file.WriteString("</tr>\n");
}

file.WriteString("</table>\n<br>");
CString time,sy,sm,sd;
GetYMD(sy,sm,sd);
time.Format("<font size=2>创建时间:%s年%s月%s日</font>\n",sy,sm,sd);
file.WriteString(time);
file.WriteString("</body>\n</html>");

file.Close();
}

file.Close();

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧