码迷,mamicode.com
首页 > Web开发 > 详细

Aspose 导出excel小demo

时间:2017-01-07 14:06:00      阅读:502      评论:0      收藏:0      [点我收藏+]

标签:索引   type   ++   ott   mon   背景   param   value   export   

//转为pdf
        private void CelltoPDF(string cellPath, string pdfPath)
        {
            Workbook book = new Workbook();
            book.Open(cellPath);
            book.Save(pdfPath, FileFormatType.Pdf);
        } 
//导入
     private DataTable ReadExcel(string fielPathName)
        {
            Workbook book = new Workbook();
            book.Open(fielPathName);
            Worksheet sheet = book.Worksheets[0];
            Cells cells = sheet.Cells;
            //第一行标题不导入
            //cells.ExportDataTable(,);

、、



使用  ExportDataTableAsString  转换成的table标题是string类型,支持和 datatable。select的使用
            DataTable dtresult = cells.ExportDataTable(1, 0, cells.MaxDataRow , cells.MaxDataColumn + 1, false);
            //true会把第一行作为标题,false则 c1,--cn作为标题
            dtresult.Columns["Column1"].ColumnName = "Name";
            dtresult.Columns["Column2"].ColumnName = "Age";
            dtresult.Columns["Column3"].ColumnName = "Gender";
            dtresult.Columns["Column4"].ColumnName = "Salary";
            dtresult.Columns["Column5"].ColumnName = "BirthDay";
 
            int r = dtresult.Rows.Count;
            return dtresult;
 
        }


//导出


    MemoryStream stream = OutFileToStream(ModelDB.dbDT);
            byte[] bytes = stream.ToArray();//StreamToBytes(stream);
            Response.ContentType = "application/octet-stream";
            //通知浏览器下载文件而不是打开 
            Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("23.xls", System.Text.Encoding.UTF8));
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();



 private MemoryStream OutFileToStream(DataTable dt)
        {
            Workbook workbook = new Workbook(); //工作簿 
            Worksheet sheet = workbook.Worksheets[0]; //工作表 
            Cells cells = sheet.Cells;//单元格 
 
 
 
 
            //为标题设置样式     
            Aspose.Cells.Style styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式[标题] 
            styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
            styleTitle.Font.Name = "宋体";//文字字体 
            styleTitle.Font.Size = 12;//文字大小 
            styleTitle.Font.IsBold = true;//粗体 
            styleTitle.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0);
            styleTitle.Pattern = BackgroundType.Solid;//设置背景颜色
 
 
            //普通字符串样式 
            Aspose.Cells.Style strStyle = workbook.Styles[workbook.Styles.Add()];//新增样式 
            strStyle.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
            strStyle.Font.Name = "宋体";//文字字体 
            strStyle.Font.Size = 9;//文字大小 
            strStyle.Font.IsBold = true;//粗体 
            strStyle.IsTextWrapped = true;//单元格内容自动换行 
 
            //金钱样式,
            Aspose.Cells.Style moneyStyle = workbook.Styles[workbook.Styles.Add()];//新增样式金钱 
            moneyStyle.Number = 4;//千分位方式展示金钱
 
            //日期样式
            Aspose.Cells.Style dateStyle = workbook.Styles[workbook.Styles.Add()];
            dateStyle.Custom = "yyyy-MM-dd";
 
            int Colnum = dt.Columns.Count;//表格列数 
            int Rownum = dt.Rows.Count;//表格行数 
 
 
 
            //列名行 
            //数据库存标题一般是英文,excel一般是汉字。所以标题一般添加
            cells[0, 0].PutValue("姓名_"); cells[0, 0].SetStyle(styleTitle);
            cells[0, 1].PutValue("年龄_"); cells[0, 1].SetStyle(styleTitle);
            cells[0, 2].PutValue("性别_"); cells[0, 2].SetStyle(styleTitle);
            cells[0, 3].PutValue("工资_"); cells[0, 3].SetStyle(styleTitle);
            cells[0, 4].PutValue("出生日期_"); cells[0, 4].SetStyle(styleTitle);
            cells.SetRowHeight(0, 35);
 
            int[] moneyCol = { 3 };//需要千分位的列缩影
            int[] dateCol = { 4 };//需要日期个格式的列索引
            //生成列
            for (int i = 0; i < Rownum; i++)
            {
 
 
                for (int k = 0; k < Colnum; k++)
                {
                    if (dt.Rows[i][k] != null)
                    {
                        if (moneyCol.Contains(k))
                        {
                            cells[i + 1, k].PutValue(Convert.ToDecimal(dt.Rows[i][k].ToString()));
                            cells[i + 1, k].SetStyle(moneyStyle);
                        }
                        else if (dateCol.Contains(k))
                        {
                            cells[i + 1, k].PutValue(Convert.ToDateTime(dt.Rows[i][k].ToString()));
                            cells[i + 1, k].SetStyle(dateStyle);
                        }
                        else
                        {
                            cells[i + 1, k].PutValue(dt.Rows[i][k].ToString(), true);
                            cells[i + 1, k].SetStyle(strStyle);
                        }
                    }
 
 
                }
                cells.SetRowHeight(1 + i, 24);
            }
 
 
            MemoryStream ms = workbook.SaveToStream();
            return ms;
        }






/// <summary> 
        /// 导出数据到本地 
        /// </summary> 
        /// <param name="dt">要导出的数据</param> 
        /// <param name="tableName">表格标题</param> 
        /// <param name="path">保存路径</param> 
        public static void OutFileToDisk(DataTable dt, string tableName, string path)
        {
 
 
            Workbook workbook = new Workbook(); //工作簿 
            Worksheet sheet = workbook.Worksheets[0]; //工作表 
            Cells cells = sheet.Cells;//单元格 
 
            //为标题设置样式     
            Aspose.Cells.Style  styleTitle = workbook.Styles[workbook.Styles.Add()];//新增样式 
            styleTitle.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
            styleTitle.Font.Name = "宋体";//文字字体 
            styleTitle.Font.Size = 18;//文字大小 
            styleTitle.Font.IsBold = true;//粗体 
 
            //样式2 
            Aspose.Cells.Style style2 = workbook.Styles[workbook.Styles.Add()];//新增样式 
            style2.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
            style2.Font.Name = "宋体";//文字字体 
            style2.Font.Size = 14;//文字大小 
            style2.Font.IsBold = true;//粗体 
            style2.IsTextWrapped = true;//单元格内容自动换行 
            style2.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
            style2.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
            style2.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
            style2.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
 
            //样式3 
            Aspose.Cells.Style style3 = workbook.Styles[workbook.Styles.Add()];//新增样式 
            style3.HorizontalAlignment = TextAlignmentType.Center;//文字居中 
            style3.Font.Name = "宋体";//文字字体 
            style3.Font.Size = 12;//文字大小 
            style3.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
            style3.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
            style3.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
            style3.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
 
            int Colnum = dt.Columns.Count;//表格列数 
            int Rownum = dt.Rows.Count;//表格行数 
 
            //生成行1 标题行    
            cells.Merge(0, 0, 1, Colnum);//合并单元格 
            cells[0, 0].PutValue(tableName);//填写内容 
            cells[0, 0].SetStyle(styleTitle);
            cells.SetRowHeight(0, 38);
 
            //生成行2 列名行 
            for (int i = 0; i < Colnum; i++)
            {
                cells[1, i].PutValue(dt.Columns[i].ColumnName);
                cells[1, i].SetStyle(style2);
                cells.SetRowHeight(1, 25);
            }
 
            //生成数据行 
            for (int i = 0; i < Rownum; i++)
            {
                for (int k = 0; k < Colnum; k++)
                {
                    cells[2 + i, k].PutValue(dt.Rows[i][k].ToString());
                    cells[2 + i, k].SetStyle(style3);
                }
                cells.SetRowHeight(2 + i, 24);
            }
            workbook.Save(path);
        }
 

Aspose 导出excel小demo

标签:索引   type   ++   ott   mon   背景   param   value   export   

原文地址:http://www.cnblogs.com/artjs/p/6259212.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!