各位高手请帮忙,请教DataGrid显示的数据打印问题,sumanden,calfly,redcaff_l,yellowwee...等高手请进。

pingguo_yu 2002-07-17 01:19:20
加精
调excel?水晶报表?调excel不知道怎么用。我按cashcho的“Crystal Report 演示-使用Push Model”建了个项目,可运行输出却是没有一条记录,怎么回事呢?假如能正常显示报表,那打印又怎么做?解答后一定给分!
...全文
93 25 点赞 打赏 收藏 举报
写回复
25 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pingguo_yu 2002-07-30
搞定!问题解决,给分!!我现在直接将datagrid里的数据导出到excel了,不做打印了……多谢各位兄弟~~~~~:)
  • 打赏
  • 举报
回复
mmkk 2002-07-30
objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
点输出成Excel按钮后执行那段代码,然后直接Response.Redirect()转到新生成的文件路径弹出下载框
  • 打赏
  • 举报
回复
hdczb 2002-07-30
gz
  • 打赏
  • 举报
回复
pingguo_yu 2002-07-29
mmkk,谢谢,我已经将其转为excel文件了,但这个excel文件是保存在服务器端的,要保存到客户端只能下载了,对吗?这个wzsswz好象提到过。再,请问中文写入的时候如何编码?
呵呵,小弟没有学过sqlserver,就连存储过程也是早上看了一下帮助,有时间一定好好学。
  • 打赏
  • 举报
回复
wzsswz 2002-07-29
我在sql 7 、sql 2000 里都调试过,可以的啊!

你先直接在查询分析器里执行
declare @cmd varchar(500)
declare @sql varchar(500)
set @sql = 'select top 10 * from you_databasename.dbo.you_tablename'
set @cmd = 'bcp "' +rtrim(@sql)+'" queryout d:\temp.xls -c -S you_servername -U sa -P you_password'
exec master..xp_cmdshell @cmd

你可用
--exec master..xp_cmdshell @cmd
print @cmd
正确的结果应为:bcp "select top 10 * from you_databasename.dbo.you_tablename " queryout d:\temp.xls -c -S you_servername -U sa -P

you_password

我建存储过程,只是想把用于数据查询部分SQL作为入口参数,作成公用存储过程而已。

create procedure to_excel
@sql varchar(500)
as
declare @cmd varchar(500)
set @cmd = 'bcp "' +rtrim(@sql)+'" queryout d:\temp.xls -c -S you_servername -U sa -P you_password'
exec master..xp_cmdshell @cmd



注:
bcp(批量copy)功能一览表

usage: bcp {dbtable | query} {in | out | queryout | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n native type] [-c character type] [-w wide character type]
[-N keep non-text native] [-V file format version] [-q quoted identifier]
[-C code page specifier] [-t field terminator] [-r row terminator]
[-i inputfile] [-o outfile] [-a packetsize]
[-S server name] [-U username] [-P password]
[-T trusted connection] [-v version] [-R regional enable]
[-k keep null values] [-E keep identity values]
[-h "load hints"]


假如还搞不定,建议你化时间学学sql server,你的sql server实在不敢苟同,竟然连master数据库都不知道。。。
  • 打赏
  • 举报
回复
pingguo_yu 2002-07-29
在asp.net的web窗体测试也无效,源代码:
SqlConnection myConn=new SqlConnection("server=WANGYUJUAN;uid=sa;pwd=;database=master");
SqlCommand myCommand=new SqlCommand("to_excel",myConn);
myCommand.CommandType=CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@sql",SqlDbType.VarChar));
myCommand.Parameters["@sql"].Value="exec to_excel 'select top 10 * from msdb.dbo.leave_card'";
myCommand.Connection.Open();
try
{
myCommand.ExecuteNonQuery();
}
catch(SqlException se)
{
;
}
myCommand.Connection.Close();
  • 打赏
  • 举报
回复
mmkk 2002-07-29
看这篇HowTo
http://support.microsoft.com/default.aspx?scid=kb;en-us;q308247
有C#和VB.NET两个版本,记住中文需要在写入的时候需要编码,否则会有乱码,Good Luck!
  • 打赏
  • 举报
回复
pingguo_yu 2002-07-29
wzsswz,谢谢你的帮忙!我直接在查询分析器里执行exec to_excel 'select top 10 * from msdb.dbo.leave_card',它报告:“'bcp' 不是内部或外部命令,也不是可运行的程序或批处理文件。”这是什么意思?bcp能解释一下吗?谢谢
  • 打赏
  • 举报
回复
wzsswz 2002-07-28
不好意思,应写成:
dim sql as string = "exec to_excel 'select top 10 * from msdb.dbo.leave_card'"
  • 打赏
  • 举报
回复
wzsswz 2002-07-28
在你的代码中执行该存储过程即可
----------------
dim sql = "exec to_excel 'select top 10 * from msdb.dbo.leave_card'"
....
  • 打赏
  • 举报
回复
wzsswz 2002-07-28
master 是sql server 的master 数据库, use master 是指连接到master数据库 这儿可以不写 ,因为exec master..xp_cmdshell @cmd 已经use了

你可在库中建一存储过程
create procedure to_excel
@sql varchar(500)
as
declare @cmd varchar(500)
set @cmd = 'bcp "' +rtrim(@sql)+'" queryout d:\temp.xls -c -S pingguo_yu -U sa -P 123456'
exec master..xp_cmdshell @cmd
---@sql是你要导出数据的sql语句


在你的代码中执行该存储过程即可
----------------
dim sql = "exec to_excel select top 10 * from msdb.dbo.leave_card'"
....

  • 打赏
  • 举报
回复
pingguo_yu 2002-07-28
多谢icyer,wzsswz等各位兄弟!楼上的说的正是小弟需要的,我想直接把要打印的数据导出到一个excel文件就行了,让用户自己用excel打开后打印(vs自带的CrystalReport好象不能打印?)。小弟愚笨,wzsswz你能否说的具体一点?user master是什么?看你写的好象操作数据库一样,能否给个导出到excel的子函数?
  • 打赏
  • 举报
回复
wzsswz 2002-07-27
有关数据导出生成excel,可参靠下面的SQL:
declare @cmd as varchar(500)
--set @cmd='bcp '+数据库+'.dbo.'+sql+' queryout '+导出路径+导出文件名+' -c -S 数据服务器名 -U 用户名 -P 密码'
use master
set @cmd = 'bcp "select * from msdb.dbo.leave_card" queryout d:\temp.xls -c -S pingguo_yu -U sa -P 1234567'
exec master..xp_cmdshell @cmd
  • 打赏
  • 举报
回复
icyer 2002-07-27
在ASP.NET中操作Excel

1. 建立连接
//注意,"Extended Properties"是必需的
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Book1.xls") + ";Extended Properties=\"Excel 8.0;\"";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();

2. 执行操作
//注意,列名是Excel中的第一行数据
string strCommand = "update [Sheet1$] set col1='aa22' where col1='a2'";
OleDbCommand cmd = new OleDbCommand(strCommand, conn);
cmd.ExecuteNonQuery();

3. 读取数据
OleDbDataAdapter da = new .OleDbDataAdapter("select * from [Sheet1$]", conn);
DataSet ds = new DataSet();
da.Fill(ds);
  • 打赏
  • 举报
回复
wzsswz 2002-07-27
要使客户端能显示excel与word,除非你先把数据保存到server端一个excel或word文档里,然后在用url指定哪个文档
  • 打赏
  • 举报
回复
wzsswz 2002-07-27
应参靠 icyer、 ntk() 的意见,excel估计不行,主要问题是不能在客户端显示。因为excel与word类似,请看看下面的帖子
http://www.csdn.net/expert/topic/895/895936.xml?temp=.1316797

icyer() 的方法我没试过,能详细介绍一下吗?
  • 打赏
  • 举报
回复
pingguo_yu 2002-07-26
我按cashcao翻译的那篇《在 Visual Studio .NET中使用Crystal Report(下)》上面的步骤做了一个push模式的例子,编译通过,可运行得到的报表却没有一条记录!是不是在建报表的时候没有选择字段到“详细资料”区的缘故?我已经将数据集导入到表了啊……这是怎么回事?
  • 打赏
  • 举报
回复
daehappy 2002-07-21
up!gz!
  • 打赏
  • 举报
回复
ntk 2002-07-19
你可以使用水晶报表啊!直接使用DataSet绑定到报表就可以在Web页上显示了!我讲的太简单了 看一下帮助你就会了!:)
  • 打赏
  • 举报
回复
pingguo_yu 2002-07-18
楼上的,能说具体点吗?怎么调excel?还有,你用过水晶报表吗?我照cashcao翻译的那篇aspfree上的文章做了pull模式的报表,可显示却无内容,怎么回事?
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2002-07-17 01:19
社区公告
暂无公告