小Q的博客

  • 首页
  • net编程
    • 产品和框架
    • 开发实例
    • 经验技巧
    • 开源组件
  • wp独立站
  • 自媒体
  • 日记本
  • 工具箱
每个程序员,都应该有一个自己的博客站
  1. 首页
  2. net编程
  3. 经验技巧
  4. 正文

devexpress中grid控件 如何将数据导出成图片?

2023年8月7日 96点热度 0人点赞 0条评论

做winform项目开发的,DevExpress控件应该都很熟悉,它其中的Grid控件最为常用,展示网格数据很不错。既可以分组、还能过滤、合计等。那么如何把Grid展示的数据,转成图片呢?比如下面这张图

 

查了下Grid提供的方法,能导出很多种格式,包括txt、csv、html、mht、word文档s、excel文档等,确实没包含image文档。这篇博客就告诉你如何实现?

方法1:gdi画
这个方法最原始也最万能,但也最复杂,要求也最高。没有图形学方面的基础,想要搞定是有些难度的。不推荐使用

方法2:转成office文档
office文档有很多方法可以转成图片,比如ffmpeg

方法3:转成html文档
其实转成网页文件是最简单的,转成html文件后,直接用浏览器打开。比较主流的像QQ浏览器、360浏览器,都提供了将网页转为图片的功能。用上面这个方法,能解决大部分的转图片功能,但也有些复杂的,效果就不好。比如我上面发的第1张图,单元格的背景色不一样。

所以这时候就要用代码实现了。先转成html文件,直接修改它的样式源代码,达到自己满意为止,最后再用浏览器打开,转成图片即可。
html文件转图片,也是可以用代码实现的,代码如下所示。用代码实现,好处就是可以在程序里一步到位的实现这个功能

总结下,就是先转成html文件,样式不满意就修改,最后再将html文件转为图片即可。附html文件转图片的源码

/// <summary>
/// 网页地址转为图片服务类
/// </summary>
class WebPageToImageService
{
    //调用示例
    //string urlPath = "http://www.cnblogs.com/xiyang1011/";
    //string filePath = @"C:\Test.jpeg";
    //WebPageToImageUtil imageUtil = new WebPageToImageUtil(urlPath, filePath);
    //Bitmap imageWebPage = imageUtil.Generate();

    private Bitmap m_Bitmap;
    private string m_Url;
    private string m_FileName = string.Empty;

    public WebPageToImageService(string url)
    {
        // Without file 
        m_Url = url;
    }
    public WebPageToImageService(string url, string fileName)
    {
        // With file 
        m_Url = url;
        m_FileName = fileName;
    }

    private void _Generate()
    {
        var browser = new WebBrowser { ScrollBarsEnabled = false };
        browser.Navigate(m_Url);
        browser.DocumentCompleted += WebBrowser_DocumentCompleted;
        while (browser.ReadyState != WebBrowserReadyState.Complete)
        {
            Application.DoEvents();
        }
        browser.Dispose();
    }
    private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        // Capture 
        var browser = (WebBrowser)sender;
        browser.ClientSize = new Size(browser.Document.Body.ScrollRectangle.Width, browser.Document.Body.ScrollRectangle.Bottom);
        browser.ScrollBarsEnabled = false;
        m_Bitmap = new Bitmap(browser.Document.Body.ScrollRectangle.Width, browser.Document.Body.ScrollRectangle.Bottom);
        browser.BringToFront();
        browser.DrawToBitmap(m_Bitmap, browser.Bounds);

        // Save as file? 
        if (m_FileName.Length > 0)
        {
            // Save 
            m_Bitmap.SaveJPG100(m_FileName);
        }
    }

    public Bitmap Generate()
    {
        // Thread 
        var m_thread = new Thread(_Generate);
        m_thread.SetApartmentState(ApartmentState.STA);
        m_thread.Start();
        m_thread.Join();
        return m_Bitmap;
    }
}

 

相关阅读

devexpress中grid控件示例,打造全网最全教程

标签: c#教程 devexpress控件 grid控件 net教程 转html文件 转image文件
最后更新:2023年8月7日

小Q

80后中年不油腻大叔,喜欢编写代码、打羽毛球、做木制玩具。目前定居浙江杭州

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2022 小Q的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备2022019157号-2