本文使用 org.in2bits.MyXls.dll 进行导出 Excel 的过程讲解
功能实现: 将GridView信息导出Excel表,如果列表信息是根据 时间 筛选出来, 那么Excel表的标题包含时间 , 例如 :2011-07-05~2011-11-09 ***-客户信息列表
第一步: 创建 Excel
/*****************************创建Excel star*****************************/ org.in2bits.MyXls.XlsDocument doc = new org.in2bits.MyXls.XlsDocument(); doc.FileName = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "") + ".xls";//excel文件名称 org.in2bits.MyXls.Worksheet sheet = doc.Workbook.Worksheets.Add("sheet1");//Worksheets.AddNamed("sheet1");//Excel工作表名称 org.in2bits.MyXls.Cells cells = sheet.Cells; /*****************************创建Excel end *****************************/
/*****************************sheett标题样式 star *****************************/ MergeArea ma = new MergeArea(1, 1, 1, 15); //合并第1行、第1列 到 第1行、第14列 sheet.AddMergeArea(ma); //填加合并单元格 XF titleXF = doc.NewXF(); // 为xls生成一个XF实例,XF是单元格格式对象 titleXF.HorizontalAlignment = HorizontalAlignments.Centered; // 设定文字居中 titleXF.VerticalAlignment = VerticalAlignments.Centered; // 垂直居中 titleXF.UseBorder = true; // 使用边框 titleXF.TopLineStyle = 1; // 上边框样式 titleXF.TopLineColor = Colors.Black; // 上边框颜色 titleXF.LeftLineStyle = 1; // 左边框样式 titleXF.LeftLineColor = Colors.Black; // 左边框颜色 titleXF.RightLineStyle = 1; // 右边框样式 titleXF.RightLineColor = Colors.Black; // 右边框颜色 titleXF.Font.FontName = "宋体"; // 字体 titleXF.Font.Bold = true; // 是否加楚 titleXF.Font.Height = 12 * 20; // 字大小(字体大小是以 1/20 point 为单位的) /*****************************sheett标题样式 end *****************************/ /*****************************列标题样式 star *****************************/ XF columnTitleXF = doc.NewXF(); // 为xls生成一个XF实例,XF是单元格格式对象 columnTitleXF.HorizontalAlignment = HorizontalAlignments.Centered; // 设定文字居中 columnTitleXF.VerticalAlignment = VerticalAlignments.Centered; // 垂直居中 columnTitleXF.UseBorder = true; // 使用边框 columnTitleXF.TopLineStyle = 1; // 上边框样式 columnTitleXF.TopLineColor = Colors.Black; // 上边框颜色 columnTitleXF.BottomLineStyle = 1; // 下边框样式 columnTitleXF.BottomLineColor = Colors.Black; // 下边框颜色 columnTitleXF.LeftLineStyle = 1; // 左边框样式 columnTitleXF.LeftLineColor = Colors.Black; // 左边框颜色 columnTitleXF.Pattern = 1; // 单元格填充风格。如果设定为0,则是纯色填充(无色),1代表没有间隙的实色 columnTitleXF.PatternBackgroundColor = Colors.Red; // 填充的底色 columnTitleXF.PatternColor = Colors.Default2F; // 填充背景色 /*****************************列标题样式 end *****************************/ /*****************************列内容样式 star *****************************/ XF dataXF = doc.NewXF(); // 为xls生成一个XF实例,XF是单元格格式对象 dataXF.HorizontalAlignment = HorizontalAlignments.Centered; // 设定文字居中 dataXF.VerticalAlignment = VerticalAlignments.Centered; // 垂直居中 dataXF.UseBorder = true; // 使用边框 dataXF.LeftLineStyle = 1; // 左边框样式 dataXF.LeftLineColor = Colors.Black; // 左边框颜色 dataXF.BottomLineStyle = 1; // 下边框样式 dataXF.BottomLineColor = Colors.Black; // 下边框颜色 dataXF.Font.FontName = "宋体"; dataXF.Font.Height = 9 * 20; // 设定字大小(字体大小是以 1/20 point 为单位的) dataXF.UseProtection = false; // 默认的就是受保护的,导出后需要启用编辑才可修改 dataXF.TextWrapRight = true; // 自动换行 /*****************************列内容样式 end *****************************/ /*****************************列样式 end *****************************/ ColumnInfo col0 = new ColumnInfo(doc, sheet); // 列对象 col0.ColumnIndexStart = 0; // 起始列为第1列,索引从0开始 col0.ColumnIndexEnd = 0; // 终止列为第1列,索引从0开始 col0.Width = 6 * 256; // 列的宽度计量单位为 1/256 字符宽 sheet.AddColumnInfo(col0); // 把格式附加到sheet页上 ColumnInfo col2 = new ColumnInfo(doc, sheet); // 列对象 col2.ColumnIndexStart = 1; // 起始列为第1列,索引从0开始 col2.ColumnIndexEnd = 9; // 终止列为第1列,索引从0开始 col2.Width = 14 * 256; // 列的宽度计量单位为 1/256 字符宽 sheet.AddColumnInfo(col2); // 把格式附加到sheet页上 ColumnInfo col1 = new ColumnInfo(doc, sheet); col1.ColumnIndexStart = 10; // 起始列为第1列,索引从0开始 col1.ColumnIndexEnd =12; // 终止列为第1列,索引从0开始 col1.Width =8 * 256; // 列的宽度计量单位为 1/256 字符宽 sheet.AddColumnInfo(col1); // 把格式附加到sheet页上 ColumnInfo col4 = new ColumnInfo(doc, sheet); col4.ColumnIndexStart = 13; // 起始列为第1列,索引从0开始 col4.ColumnIndexEnd = 13; // 终止列为第1列,索引从0开始 col4.Width = 18 * 256; // 列的宽度计量单位为 1/256 字符宽 sheet.AddColumnInfo(col4); // 把格式附加到sheet页上 ColumnInfo col3 = new ColumnInfo(doc, sheet); col3.ColumnIndexStart = 9; // 起始列为第1列,索引从0开始 col3.ColumnIndexEnd = 9; // 终止列为第1列,索引从0开始 col3.Width = 22 * 256; // 列的宽度计量单位为 1/256 字符宽 sheet.AddColumnInfo(col3); // 把格式附加到sheet页上 /*****************************列样式 end *****************************/
/*****************************sheet标题 star *****************************/ Cell topCell; string TitleName = "客户信息列表"; if (strTime.Trim().Length > 0 && endTime.Trim().Length > 0) { if (Convert.ToDateTime(strTime).ToString("yyyy-MM-dd") == Convert.ToDateTime(endTime).ToString("yyyy-MM-dd")) { TitleName = endTime + "客户信息列表"; } else { TitleName = strTime + "~" + endTime + "客户信息列表"; } } topCell = cells.Add(1, 1, TitleName, titleXF); /*****************************sheet标题 end *****************************/ /*****************************列标题 star *****************************/ int colnum = this.gv_comlist.Columns.Count; //获取gridview列数 Cell testCell; int j = 0; for (int i = 0; i < colnum - 2; i++) { /* 如果管理员是salescash, 将导出信息阉掉前三列 * */ if ("salescash".Equals(Session["UserID"])) { if (i == 1 || i == 2 || i == 3) { continue; } } testCell = cells.Add(2, (j + 1), this.gv_comlist.Columns[i].HeaderText, columnTitleXF);//导出gridView列名 j++; } /*****************************列标题 end *****************************/ /*****************************列内容 star *****************************/ for (int i = 0; i < dt.Rows.Count; i++) { cells.Add((i + 3), 1, Convert.ToString(i + 1), dataXF); if ("salescash".Equals(Session["UserID"])) { //cells.Add((i + 3), 5, Convert.ToString(dt.Rows[i]["Content"])); cells.Add((i + 3), 2, Convert.ToString(dt.Rows[i]["Name"]), dataXF); cells.Add((i + 3), 3, Convert.ToString(dt.Rows[i]["Contry"]), dataXF); cells.Add((i + 3), 4, Convert.ToString(dt.Rows[i]["City"]), dataXF); cells.Add((i + 3), 5, Convert.ToString(dt.Rows[i]["Phone"]), dataXF); cells.Add((i + 3), 6, Convert.ToString(dt.Rows[i]["Tel"]), dataXF); cells.Add((i + 3), 7, Convert.ToString(dt.Rows[i]["Emial"]), dataXF); cells.Add((i + 3), 8, Convert.ToString(dt.Rows[i]["status"]), dataXF); cells.Add((i + 3), 9, Convert.ToString(dt.Rows[i]["newActivate"]), dataXF); cells.Add((i + 3), 10, Convert.ToString(dt.Rows[i]["newDownBool"]), dataXF); cells.Add((i + 3), 11, Convert.ToString(dt.Rows[i]["createdate"]), dataXF); cells.Add((i + 3), 12, Convert.ToString(dt.Rows[i]["Market"]), dataXF); } else { cells.Add((i + 3), 2, Convert.ToString(dt.Rows[i]["Campaign"]), dataXF); cells.Add((i + 3), 3, Convert.ToString(dt.Rows[i]["Source"]), dataXF); cells.Add((i + 3), 4, Convert.ToString(dt.Rows[i]["Medium"]), dataXF); //cells.Add((i + 3), 5, Convert.ToString(dt.Rows[i]["Content"])); cells.Add((i + 3), 5, Convert.ToString(dt.Rows[i]["Name"]), dataXF); cells.Add((i + 3), 6, Convert.ToString(dt.Rows[i]["Contry"]), dataXF); cells.Add((i + 3), 7, Convert.ToString(dt.Rows[i]["City"]), dataXF); cells.Add((i + 3), 8, Convert.ToString(dt.Rows[i]["Phone"]), dataXF); cells.Add((i + 3), 9, Convert.ToString(dt.Rows[i]["Tel"]), dataXF); cells.Add((i + 3), 10, Convert.ToString(dt.Rows[i]["Emial"]), dataXF); cells.Add((i + 3), 11, Convert.ToString(dt.Rows[i]["status"]), dataXF); cells.Add((i + 3), 12, Convert.ToString(dt.Rows[i]["newActivate"]), dataXF); cells.Add((i + 3), 13, Convert.ToString(dt.Rows[i]["newDownBool"]), dataXF); cells.Add((i + 3), 14, Convert.ToString(dt.Rows[i]["createdate"]), dataXF); cells.Add((i + 3), 15, Convert.ToString(dt.Rows[i]["Market"]), dataXF); } } /*****************************列内容 end *****************************/
最后 :
doc.Send();//把写好的excel文件输出到客户端