使用Aspose将DataTable转Excel

0.准备工作

1.下载并引入Aspose.Cells

下载Aspose Cells并引入using Aspose.Cells 下面示例中用的是.net 3.0版本的Aspose Cells,编译环境VS2013

具体下载和引入方法见:http://www.cnblogs.com/moonache/p/4991459.html

1.使用Aspose将DataTable转为Excel

1.代码

下面代码用于将DataTable dt 转为Excel文件并存在path目录下

/// <summary>
/// DataTable转Excel文件
/// </summary>
/// <param name="dt"></param>
/// <param name="path"></param>
/// <returns></returns>
public static bool ExportExcelWithAspose(DataTable dt, string path)
{

    if (dt != null)
    {
        try
        {
            Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
            Aspose.Cells.Worksheet cellSheet = workbook.Worksheets[0];
            //为head添加样式
            Aspose.Cells.Style headStyle = workbook.Styles[workbook.Styles.Add()];
            //设置居中
            headStyle.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;
            //设置背景颜色
            headStyle.ForegroundColor = System.Drawing.Color.FromArgb(215, 236, 241);
            headStyle.Pattern = BackgroundType.Solid;
            headStyle.Font.Size = 12;
            headStyle.Font.Name = "宋体";
            headStyle.Font.IsBold = true;

            //为单元格添加样式
            Aspose.Cells.Style cellStyle = workbook.Styles[workbook.Styles.Add()];
            //设置居中
            cellStyle.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;
            cellStyle.Pattern = BackgroundType.Solid;
            cellStyle.Font.Size = 12;
            cellStyle.Font.Name = "宋体";

            //设置列宽 从0开始 列宽单位是字符
            cellSheet.Cells.SetColumnWidth(1, 43);
            cellSheet.Cells.SetColumnWidth(5, 12);
            cellSheet.Cells.SetColumnWidth(7, 10);
            cellSheet.Cells.SetColumnWidth(8, 14);
            cellSheet.Cells.SetColumnWidth(9, 14);

            int rowIndex = 0;
            int colIndex = 0;
            int colCount = dt.Columns.Count;
            int rowCount = dt.Rows.Count;
            //Head 列名处理
            for (int i = 0; i < colCount; i++)
            {
                cellSheet.Cells[rowIndex, colIndex].PutValue(dt.Columns[i].ColumnName);
                cellSheet.Cells[rowIndex, colIndex].SetStyle(headStyle);
                colIndex++;
            }
            rowIndex++;
            //Cell 其它单元格处理
            for (int i = 0; i < rowCount; i++)
            {
                colIndex = 0;
                for (int j = 0; j < colCount; j++)
                {
                    cellSheet.Cells[rowIndex, colIndex].PutValue(dt.Rows[i][j].ToString());
                    cellSheet.Cells[rowIndex, colIndex].SetStyle(cellStyle);
                    colIndex++;
                }
                rowIndex++;
            }
            cellSheet.AutoFitColumns();  //列宽自动匹配,当列宽过长是收缩
            path = Path.GetFullPath(path);
            //workbook.Save(path,SaveFormat.CSV);
            workbook.Save(path);
            return true;
        }
        catch (Exception e)
        {
            throw new Exception("导出Excel失败" + e.Message);
        }
    }
    else
    {
        return false;
    }

}

下面代码用于直接在页面输出Excel文件,供用户下载

WonderTools.ExportExcelWithAspose(templateDt,filePath);

//提供excel的下载
HttpResponse _Response = HttpContext.Current.Response;
_Response.Clear();
_Response.ClearHeaders();
_Response.Buffer = false;
_Response.ContentType = "application/x-excel";
_Response.AppendHeader("Content-Disposition", "attachment;filename=Template.xlsx");
_Response.WriteFile(fileInfo.FullName);
_Response.Flush();
_Response.End();

PS:

更多Excel格式设置 :http://blog.sina.com.cn/s/blog_6438b0e50101cfer.html

官方手册:http://www.aspose.com/docs/display/cellsnet/Introduction+of+Aspose.Cells+for+.NET

来自为知笔记(Wiz)

时间: 2024-12-26 05:21:34

使用Aspose将DataTable转Excel的相关文章

使用Aspose.Cell.dll导出Excel总结

这两天项目上用Aspose导出Excel来着.开始感觉挺简单的,但是实际操作起来还是挺复杂的,调试占的时间很长.主要是动态生成列.合并单元格.调样式占了很长时间,还是总结一下吧. 基础操作: //EXCEL模板路径 var filePath = HttpContext.Current.Server.MapPath("~/" + ConfigurationManager.CurrentPackage.Settings["FilePath"]); //打开模板sheet

extjs+Aspose.Cells导出到Excel

1.&=DataSource.Field,&=[DataSource].[Field]是对DataTable和几何类型的引用,将会从当前行开始竖直向下生成多行数据. 2.&=$data:是对变量或数组的引用.数组存在skip,horizontal等属性,具体参见官方网站 3.&=&=动态公式计算:{r}当前行,{c}当前列,{-n},{n}当前行或列的偏移量前n或后n. 4.&==是动态计算,如excel,if等语句.(if(logic_test,true_

C# Datatable导出Excel方法

C# 导出Excel方法  先引用下System.IO;System.data; 具体函数如下: 1 public static bool ExportCSV(DataTable dt, string fileNmae) 2 { 3 bool Msg = false; 4 string con = ""; 5 foreach (DataColumn dc in dt.Columns) 6 { 7 con += dc.ColumnName + ","; 8 } 9 c

【转】C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文文件名乱码

本文原创地址:http://blog.csdn.net/ranbolwb/article/details/8083983 ,转载请保留本行. 本例子是上一篇 DataTable 导出 Excel 的进阶,除了上一篇提到的处理乱码问题,本例还添加了处理多行表头.合并单元格的功能及处理中文文件名乱码问题,应该可以满足日常开发的需要了. 废话不多说了,直接上代码: [C#] 可以写单独类 1 using System; 2 using System.Collections.Generic; 3 usi

asp.net DataTable导出 excel的方法记录(第三方)

官网:http://npoi.codeplex.com/ 简单应用,主要是可以实现我们想要的简单效果,呵呵 需要引入dll,可以在官网下载,也可在下面下载 C#代码   protected void getExcel(DataTable dt) { NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.Sheet sheet = book.CreateSh

Aspose&#160;强大的服务器端 excel word ppt pdf 处理工具

Aspose 强大的服务器端 excel word ppt pdf 处理工具 http://www.aspose.com/java/word-component.aspx Aspose 强大的服务器端 excel word ppt pdf 处理工具

DataTable 导出 excel , 可以自定义列名,没有繁琐的引用

/// <summary> /// 由DataTable导出Excel /// </summary> /// <param name="p"></param> /// <param name="dt"></param> /// <param name="fileName"></param> /// <param name="b"

C#中datatable导出excel(三种方法)

方法一:(拷贝直接可以使用,适合大批量资料, 上万笔)Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();SaveFileDialog savefiledialog = new SaveFileDialog();System.Reflection.Missing miss = System.Reflection.Missing.Value;ap

Excel导入DataTable兼容2003-2012(请细心查看注释)以及 DataTable导出Excel(导出格式2003.xls)注释:需要引用NPOI

1.#region Excel导入DataTable兼容2003-2012(请细心查看注释)/// <summary> /// 读取Excel文件到DataSet中/// 注释1:2012导出如报错“ System.InvalidOperationException: 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序.”解决:下载2007 Office system 驱动程序:数据连接组件安装http://download.microsoft.com/downl