1  /// <summary>
 2         ///  在DataRow中 获取 对应列的值
 3         /// </summary>
 4         /// <param name="colname">列名称</param>
 5         /// <param name="colname">列的类型</param>
 6         /// <param name="dr">DataRow 集合</param>
 7         /// <returns>列值</returns>
 8         private object GetvalbyDataSet(string colname,Type coltype, DataRow dr)
 9         {
10             if (dr.Table.Columns.Contains(colname))
11             {
12                 if (typeof(int) == coltype)
13                 {
14                     return dr[colname] == null ? 0 : int.Parse(dr[colname].ToString());
15                 }
16                 if (typeof(DateTime) == coltype)
17                 {
18                     return dr[colname] == null ? DateTime.Parse("2016/9/22") : DateTime.Parse(dr[colname].ToString());
19                 }
20                 if (typeof(decimal) == coltype)
21                 {
22                     return dr[colname] == null ? decimal.Parse("0") : decimal.Parse(dr[colname].ToString());
23                 }
24                 string str = dr[colname] == null ? "" :  dr[colname].ToString();
25                 return str;
26             }
27             else
28             {
29                 return "";
30             }
31         }

需要引入dll文件  

decimal.Truncate(data)//取decimal整数位

图片 1图片 2

//插入图片
byte[] bytes = System.IO.File.ReadAllBytes(FileName);
if (!string.IsNullOrEmpty(FileName))
{
int pictureIdx = workbook.AddPicture(bytes,
NPOI.SS.UserModel.PictureType.JPEG);
HSSFPatriarch patriarch =
(HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 100, 50, col, row,
col + 1, row + 1);
//##处理照片位置,【图片左上角为(col,
row)第row+1行col+1列,右下角为( col +1, row +1)第 col +1+1行row
+1+1列,宽为100,高为50

模仿微信朋友圈发布时间,使用扩展方法将将过去时间展示成xx(秒/分/小时/天)前,以留言列表中的留言时间为例,先来看一下直接的时间展示效果(date.ToString(“yyyy/MM/dd
HH:mm:ss”))

 

//此处代码是将 xls文件发到页面通过浏览器直接下载到本地  可以放到 界面调用的地方
                //System.IO.MemoryStream ms = new System.IO.MemoryStream();
                //book.Write(ms);
                //Response.AddHeader("Content-Disposition", string.Format("attachment; filename=绩效统计.xls"));
                //Response.BinaryWrite(ms.ToArray());
                //book = null;
                //ms.Close();
                //ms.Dispose();  


                return book;
            }
            catch { 
            throw new Exception();
            }finally{
                book=null;
            }


        }







    }
}

  /// <summary>
        ///导出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnExport_Click(object sender, EventArgs e)
      {



            DataTable dt = cmbll.getdt();



            NPOI.HSSF.UserModel.HSSFWorkbook book = NPOIExport.DoExport(dt, "xxx报表");
            //写入客户端
            try
            {
                WriteClient(book);
            }
            catch
            {

            }
            finally
            {

                book = null;
            }

        }

        public void WriteClient(NPOI.HSSF.UserModel.HSSFWorkbook book)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            book.Write(ms);
            Response.AddHeader("Content-Disposition", string.Format("attachment; filename=客户资料"+DateTime.Now.ToString("yyyyMMddHHmmss")+".xls"));
            Response.BinaryWrite(ms.ToArray());
            book = null;
            ms.Close();
            ms.Dispose();
        }

图片 3

图片 4图片 5

 

效果图

 1         /// <summary>
 2         ///  Dataset 集合根据传入的 类型。自动转换List集合"
 3         /// </summary>
 4         /// <typeparam name="T">类(属性类 modle)</typeparam>
 5         /// <param name="ds">数据集合</param>
 6         /// <returns>List集合</returns>
 7         public List<T> GetListbyDataSet<T>(DataSet ds) where T: new()
 8         {
 9             List<T> li = new List<T>(); //声明要返回的集合
10             var s = typeof(T);          // 获取传入类型
11             var str = s.GetProperties(); // 获取传入类型的属性集合
12             if (ds.Tables[0] == null || ds.Tables[0].Rows.Count < 0) //判断ds的null和是否包含数据
13             {
14                 return li;
15             }
16             for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //循环集合准备获取数据
17             {
18                 T t1 = new T();       // 声明类
19                 foreach (var item in str)  // 循环类的属性
20                 {
21                     string itemstr = item.Name; //类属性名称
22                     var itemtype = item.PropertyType; // 类属性的类型(int string datetime)
23                     object value = GetvalbyDataSet(itemstr, itemtype, ds.Tables[0].Rows[i]); //获取值
24                     item.SetValue(t1, value, null);
25                     
26                 }
27                 li.Add(t1);
28             }
29              return li;
30         }

 

下面 我们写一个拓展方法,将留言时间格式化成xx(秒/分/小时/天)前

发表评论

电子邮件地址不会被公开。 必填项已用*标注