zoukankan      html  css  js  c++  java
  • WPF 导出Excel 导出图片

            /// <summary>
            /// 导出Excel
            /// </summary>
            private void ExportExcel(DataTable ExcelDt)
            {
                //导出表格
                HSSFWorkbook workBook = new HSSFWorkbook();
                ISheet sheet1 = workBook.CreateSheet("表名");
                //表头
                IRow headerRow = sheet1.CreateRow(0);
                foreach (DataColumn column in ExcelDt.Columns)
                {
                    headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
                }
                int rowIndex = 1;
                foreach (DataRow dr in ExcelDt.Rows)
                {
                    IRow dataRow = sheet1.CreateRow(rowIndex++);
                    foreach (DataColumn column in ExcelDt.Columns)
                    {
                        dataRow.CreateCell(column.Ordinal).SetCellValue(dr[column.ColumnName].ToString());
                    }
                }
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.DefaultExt = ".xls";
                sfd.Filter = "(*.xls)|*.xls";
                if (sfd.ShowDialog() == true)
                {
                    try
                    {
                        FileStream file = new FileStream(sfd.FileName, FileMode.Create);
                        workBook.Write(file);
                        file.Dispose();
                        MessageDialog.Show("导出成功!", "提示");
                    }
                    catch (Exception)
                    {
                        MessageDialog.Show("该文件正在被其他进程占用,导出失败!", "提示");
                    }
                }
            }
    

      使用NPOI.dll ,上述代码是使用DLL 1.2.4.0,可能使用的DLL不同,代码略有不同。比如,有的版本的NPOI.dll 的是使用的是Sheet而非ISheet。

    2.导出图片

            /// <summary>
            /// 图片转化为bitmap
            /// </summary>
            /// <param name="chartTemp"></param>
            /// <returns></returns>
            private Bitmap GetControlMap(Control ctrl)
            {
                System.Windows.Point point = ctrl.PointToScreen(new System.Windows.Point(0, 0));
                System.Drawing.Bitmap bitmap = new Bitmap((int)ctrl.Width, (int)ctrl.Height);
                System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
                System.Drawing.Size size = new System.Drawing.Size((int)ctrl.Width, (int)ctrl.Height);
                g.CopyFromScreen((int)point.X, (int)point.Y, 0, 0, size);
                return bitmap;
            }
    

      

            /// <summary>
            /// 导出图片
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnToImage_Click(object sender, RoutedEventArgs e)
            {
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.DefaultExt = ".jpg";
                sfd.Filter = "(*.jpg)|*.jpg";
                if (sfd.ShowDialog() == true)
                {
                    Bitmap bitmap = GetControlMap(humiCloud);
                    bitmap.Save(sfd.FileName);
                    MessageDialog.Show("导出成功!", "提示");
                }
            }
    

      

    
    
  • 相关阅读:
    基于Canal和Kafka实现MySQL的Binlog近实时同步
    Levenshtein Distance(编辑距离)算法与使用场景
    超强图文|并发编程【等待/通知机制】就是这个feel~
    volatile和synchronized到底啥区别?多图文讲解告诉你
    读《Clean Code 代码整洁之道》之感悟
    小小TODO标识,你用对了吗?
    深入理解JVM(③)判断对象是否还健在?
    深入理解JVM(③)虚拟机的类加载器(双亲委派模型)
    深入理解JVM(③)经典的垃圾收集器
    深入理解JVM(③)HotSpot虚拟机对象探秘
  • 原文地址:https://www.cnblogs.com/luohengstudy/p/3291579.html
Copyright © 2011-2022 走看看