asp.net 导出 Excel
本文使用 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文件输出到客户端