这段时间一直做项目,封闭开发比较忙。
有一次跟VB.NET版的 若尘 交流时他说把Excel打印功能放在打印核心中不太好,有依赖。
于是我前些日子抽了些空晚上把与Excel相关的功能重构了一下并增加了些WorkSheet的操作如增、删、改、插入、定位、重命名工作表等。MIS金质打印通以简单快捷、易用实用特点受到很多朋友的欢迎!
其中对Excel的操作更是简单容易,用Google搜到一篇文章中说到“...收集很多Excel组件...的功能比较强大,不过我觉得金质打印王的对Excel操作比它要方便,但是不支持WebForm”(原文:http://www.cnblogs.com/team/DotNetBI.html关于在ASP.NET中以DCOM方式操作Excel的几个问题)其实也支持WebForm,毕竟Excel文件直接在IE中链接打开,而且操作Excel比WebDataGrid直接导出用流打开Excel灵活得多。前期的关于Excel操作的源码公布在:
.^^.开源:C#.NET开发的MIS打印程序,各种网格如DataGrid打印、DataTable、HtmlTable等二维形式全搞定,源码免费下载
http://community.csdn.net/Expert/topic/3278/3278050.xml强贴中,ReadNum有1万多,回贴有近800。***GoldPrinter.ExcelExpert(MIS金质打印通之Excel专版)***特点:
    简单快捷、易用实用功能:1、如何将各版本Excel(COM类型库) 转换生成.Net公共语言运行库程序集如Interop.Excel.dll
2、如何引用Excel库或已生成的程序集
3、创建Excel实例
4、打开Excel工作薄工作表和模板
5、增、删、改、插入、定位、重命名工作表
6、获取活动工作表指定范围单元格及带区
7、读、写单元格内容
8、向带区中写内容9、单元格合并
10、字体及颜色
11、边框及网格线
12、保存、另存
13、打印、预览
14、彻底关闭Excel进程
15、综合应用,通打天下报表
...特色功能(整理中,请网上查看下载):
1、海量数据的瞬间导入
   直接由给定的SQL Select命令并指定每页(sheet)打印多少行数据即可瞬间完成。
2、树型结构数据的导入
   碰到树型结构的数据如典型的部门表,分层次结构,如何导入呢,导入的数据能折叠吗?
   答案是肯定的。
由于这两点需要数据连接,将随 MIS金质打印通(MISGoldPrinter)V2.5同步开放!期待中...需要的朋友:
Email:[email protected]  QQ:150439795
更多源码:www.webmis.com.cn建议朋友们不要在此留Email,有防有心人收集,如果你收到了要表示一上直接Up。

解决方案 »

  1.   

    大家可按以下方法把Web DataGrid数据直接导出Excel在IE中打开。private void WebExcel()
    {
    string strSheetName = "出勤情况明细报表";
    Response.Clear(); 
    Response.Buffer= true; 
    Response.Charset="GB2312";    
    Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(strSheetName,System.Text.Encoding.UTF8) + ".xls"); 
    //Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
    Response.ContentEncoding = System.Text.Encoding.UTF8;
    Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 
    this.EnableViewState = false;    
    Response.Write("打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
    //输出正文
    System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
    System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad); 
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
    DataGrid1.RenderControl(oHtmlTextWriter); 
    Response.Write(oStringWriter.ToString());
    Response.End();
    }
      

  2.   

    很多使用了MIS金质打印通的朋友反应说在打印时能不能直接不提示打印对话框直接打开,下面列一个谈话记录作回答:(2005-10-19 14:37:46)    英雄
    长江:我下了你的2.2测试版,现在每次打印都要选择打印机,能不能把打印机选择去掉呢?打印的时候直接打印就好了 
    (2005-10-19 14:51:54)   长江支流
    好的 
      
    (2005-10-19 16:26:56)    英雄
    长江,现在能不能给我个直接打印的GoldPrinter.DLL啊,我正在用你的打印通做程序,真好用,就是每次打印都要选择打印机,希望能直接打印,谢谢 
    (2005-10-19 16:28:09)   长江支流
    哈哈,我的思想就是简单快捷、容易实用 
      
    (2005-10-19 16:46:25)    英雄
    我在你开源的MisGoldPrinter.cs里,把Print函数中 return printerPageSetting.ShowPrintSetupDialog();去掉了,这样虽然不出现选择打印机的对话框,但也不能打印了,你能给我个现成的DLL吗  (2005-10-19 16:48:46)   长江支流
    /// <summary>
    /// 打印或显示设置对话框确定后打印。
    /// </summary>
    public void Print()
    {
    //直接打印
    this.mCurrentPageIndex = 1;
    this.mCurrentRowIndex = 0; this.mPrintDocument.PrintPage+=new System.Drawing.Printing.PrintPageEventHandler(PrintPageEventHandler); try
    {
    this.mPrintDocument.Print();
    }
    catch(Exception ex)
    {
    //Console.WriteLine(ex.Message);
    System.Windows.Forms.MessageBox.Show("打印机错误!\n","MIS金质打印通 www.webmis.com.cn");
    }

    (2005-10-19 16:49:34)   长江支流
    你把MisGoldPrinter.cs中原来的那个Print改一个名如ShowPrintSetupDialog,再把刚才这段代码拷过去就可以直接打印了 
      
    (2005-10-19 16:49:53)   /fw英雄
    谢谢 
    (2005-10-19 16:50:13)   长江支流
    你试试,试了告诉我 (2005-10-19 17:05:58)   /fw英雄
    真不错,这个很有商业价值啊 
    (2005-10-19 17:06:10)   长江支流
    感觉怎么样? 
      
    (2005-10-19 17:06:16)   /fw英雄
    你是中国的NO1 
    (2005-10-19 17:06:27)   /fw英雄
    简单好用,效果好 
    (2005-10-19 17:06:29)   长江支流
    哈哈,过奖 
      
    (2005-10-19 17:12:28)   /fw英雄
    你现在名气可真大啊,^_^ 
    (2005-10-19 17:12:41)   长江支流
    何以见得? 
      
    (2005-10-19 17:12:53)   /fw英雄
    只要做过打印的都知道你啊,都推荐的你组件啊 
    (2005-10-19 17:12:51)   长江支流
    很多网友都这么说 
      
    (2005-10-19 17:13:06)   长江支流
    都推荐的你组件啊 ? 
      
    (2005-10-19 17:13:24)   /fw英雄
    推荐金质打印通啊 
    (2005-10-19 17:13:44)   长江支流
    在哪里有推荐? 
      
    (2005-10-19 17:14:37)   /fw英雄
    人与人之间的推荐啊,我们同事推荐我用你的组件 
    (2005-10-19 17:14:54)   长江支流
    哈哈,谢谢了 
      
    (2005-10-19 17:16:11)   /fw英雄
    太好用了,真的太好用了,呵呵 
    (2005-10-19 17:16:13)   长江支流
    我正在写MIS金质打印通的XML解析器,XML自定义打印、图形、Win、Web打印没问题还会有更多的实用源码,只要给我QQ了的或mail了的   
      
    (2005-10-19 17:16:31)   长江支流
    我提倡的就是简单快捷、易用实用 
      
    (2005-10-19 17:16:50)   /fw英雄
    我塞,加XML解析器,爽 
    (2005-10-19 17:17:53)   /fw英雄
    为什么不收费呢?完全达到商业化要求了啊?这个问题别的程序员没问过吗? 
    (2005-10-19 17:18:10)   长江支流
    我本着免费的思想 
      
    (2005-10-19 17:18:51)   /fw英雄
    收个300一个KEY也正常啊,一个ACTIVEX上传组件也300呢 
    (2005-10-19 17:19:14)   /fw英雄
    收费了提供技术支持,提供最新版啊 
    (2005-10-19 17:19:13)   长江支流
    再给你个VB.net的,方便你用VB的同事 
      
    (2005-10-19 17:19:25)   /fw英雄
    谢谢 
    (2005-10-19 17:21:02)   长江支流
    哈哈,如果让你公司付费,老板就可能不愿意了  
      
    (2005-10-19 17:21:45)   /fw英雄
    不会啊,我们都用的正版啊 
    (2005-10-19 17:21:59)   长江支流
    我再搞个超强版的,但还要保证简单快捷、易用实用的特点 
      
    (2005-10-19 17:22:38)   长江支流
    如果搞的复杂的就没戏,水晶报表就是搞的太复杂,所以只吸引了大客户 
      
    (2005-10-19 17:22:49)   /fw英雄
    应该收费,加强版的300-500,个人版的50,符合中国市场啊 
    (2005-10-19 17:23:08)   长江支流
    谢谢你的支持 
      
    (2005-10-19 17:23:20)   长江支流
    我只要求程序员一天或半天的工资就可以了 
      
    (2005-10-19 17:24:10)   /fw英雄
    呵呵,只要给我技术支持和1年免费更新,我愿意多给钱 传了一个XML解析后的界面和XML源文件...(2005-10-19 17:35:03)   /fw英雄
    用XML对程序员来说就太方便了 
    (2005-10-19 17:35:59)   长江支流
    看到我刚发的XML解析的了吗? 
      
    (2005-10-19 17:36:27)   /fw英雄
    看了,XML结构定义灵活简单,真好用 
      

  3.   

    用MIS金质打印通,如果打印时不想出现打印对话框而直接打印,请修改
    源文件 MisGoldPrinter.cs/// <summary>
    /// 打印或显示设置对话框确定后打印。
    /// </summary>
    public System.Drawing.Printing.PrinterSettings PrintSetup()
    {
    this.mCurrentPageIndex = 1;
    this.mCurrentRowIndex = 0; PrinterPageSetting printerPageSetting;
    printerPageSetting = new PrinterPageSetting(mPrintDocument);
    printerPageSetting.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler); return printerPageSetting.ShowPrintSetupDialog();
    }/// <summary>
    /// 打印或显示设置对话框确定后打印。
    /// </summary>
    public void Print()
    {
    //直接打印
    this.mCurrentPageIndex = 1;
    this.mCurrentRowIndex = 0; this.mPrintDocument.PrintPage+=new System.Drawing.Printing.PrintPageEventHandler(PrintPageEventHandler); try
    {
    this.mPrintDocument.Print();
    }
    catch(Exception ex)
    {
    //Console.WriteLine(ex.Message);
    System.Windows.Forms.MessageBox.Show("打印机错误!\n","MIS金质打印通 www.webmis.com.cn");
    }
    }
      

  4.   

    我在使用excel模版打印的时候,遇到一个问题:不能直接进行页面横向或纵向的设置,只能在预览的时候设置!这样很不方便,我需要不预览就打印,而在打印之前就把页面的横向或纵向设置好!请flygoldfish(长江支流)大哥帮我解决这个问题!