个人总结导出excel报表的案例:

//导出报表

protected void btnExport_Click(object sender, EventArgs e)

{

List<ProOutContract> list = GetDataTableFromIList();

if (list == null || (list != null && list.Count == 0))

{

Messabox.ShowError(this, "无记录导出");

return;

}

string name = "~/File/ExcelFile/工程信息外部合同登记表" + Session.SessionID + ".xls";

string savePath = Server.MapPath(name);

bool f = ExportExcel(name, list, savePath);

FileInfo DownloadFile = new FileInfo(savePath); //设置要下载的文件

Response.Clear(); //清除缓冲区流中的所有内容输出

Response.ClearHeaders(); //清除缓冲区流中的所有头

Response.Buffer = false; //设置缓冲输出为false

//设置输出流的 HTTP MIME 类型为application/octet-stream

Response.ContentType = "application/octet-stream";//将 HTTP 头添加到输出流

Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("工程信息外部合同登记表.xls", System.Text.Encoding.UTF8));

//Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());//将指定的文件直接写入 HTTP 内容输出流。

//Response.WriteFile(DownloadFile.FullName);

Response.WriteFile(savePath);

Response.Flush(); //向客户端发送当前所有缓冲的输出

File.Delete(savePath);//删除文件

Response.End(); //将当前所有缓冲的输出发送到客户端

}

//得到报表数据;

public List<ProOutContract> GetDataTableFromIList()

{

int pageNumber = 1;

PageBean page = new PageBean();

page.CurrentPage = pageNumber;

page.PageSize = 100000;

ProOutContract pb = null;

if (ViewState["queryModel"] != null)

{

pb = ViewState["queryModel"] as ProOutContract;

}

else

{

pb = new ProOutContract();

}

List<ProOutContract> list = null;

list = pm.GetListByPage(pb, page);

return list;

}

//导出报表

public bool ExportExcel(string reportName, List<ProOutContract> list, string saveFileName)

{

//获取Excel进程

Process[] P0, P1;

P0 = Process.GetProcessesByName("Excel");

if (list == null)

{

return false;

}

bool fileSaved = false;

Excel.Application m_objExcel = new Excel.Application();

if (m_objExcel == null)

{

return false;

}

Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;

Excel.Workbook m_objBook = (Excel.Workbook)(m_objBooks.Add(Excel.XlWBATemplate.xlWBATWorksheet));

Excel.Sheets m_objSheets = (Excel.Sheets)m_objBook.Worksheets;

Excel._Worksheet m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));

m_objSheet.Name = "Sheet1";

Excel.Range range = null;

long totalCount = list.Count + 5;

long colnum = 29;//有12列;

((Excel.Range)m_objSheet.Cells).NumberFormatLocal = "@";//修改excel为文本形式

m_objSheet.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[totalCount, colnum]).Borders.LineStyle = XlLineStyle.xlContinuous;//设置所有表格线;

////第一行设置

m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).MergeCells = true;//合并单元格

m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平对齐方式

m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直对齐方式

m_objExcel.get_Range(m_objSheet.Cells[1, 1], m_objSheet.Cells[1, colnum]).Font.Size = 14;

m_objSheet.Cells[1, 1] = "合同签订进程一览表";

m_objExcel.get_Range(m_objSheet.Cells[2, 1], m_objSheet.Cells[totalCount, 1]).ColumnWidth = 20;//设置列的宽度;

m_objExcel.get_Range(m_objSheet.Cells[2, 1], m_objSheet.Cells[5, colnum]).HorizontalAlignment = XlHAlign.xlHAlignCenter;//水平对齐方式

m_objExcel.get_Range(m_objSheet.Cells[2, 1], m_objSheet.Cells[5, colnum]).VerticalAlignment = XlVAlign.xlVAlignCenter;//垂直对齐方式

//--

for (int i = 1; i <= colnum; i++)

{

if (i <= 2 || (i >= 7 && i <= 9) || i == 27 || i == 28 || i == 29)

{

m_objExcel.get_Range(m_objSheet.Cells[2, i], m_objSheet.Cells[5, i]).MergeCells = true;

}

if (i >= 3 && i <= 6 || i == 23 || i == 24)

{

m_objExcel.get_Range(m_objSheet.Cells[4, i], m_objSheet.Cells[5, i]).MergeCells = true;

}

if (i >= 10 && i <= 19 || i == 25 || i == 26)

{

m_objExcel.get_Range(m_objSheet.Cells[3, i], m_objSheet.Cells[5, i]).MergeCells = true;

}

if (i >= 22 && i <= 24)

{

m_objExcel.get_Range(m_objSheet.Cells[4, i], m_objSheet.Cells[5, i]).MergeCells = true;

}

}

m_objExcel.get_Range(m_objSheet.Cells[2, 3], m_objSheet.Cells[3, 6]).MergeCells = true;

m_objExcel.get_Range(m_objSheet.Cells[2, 10], m_objSheet.Cells[2, 14]).MergeCells = true;

m_objExcel.get_Range(m_objSheet.Cells[2, 15], m_objSheet.Cells[2, 24]).MergeCells = true;

m_objExcel.get_Range(m_objSheet.Cells[2, 25], m_objSheet.Cells[2, 26]).MergeCells = true;

m_objExcel.get_Range(m_objSheet.Cells[4, 20], m_objSheet.Cells[4, 21]).MergeCells = true;

m_objExcel.get_Range(m_objSheet.Cells[3, 20], m_objSheet.Cells[3, 24]).MergeCells = true;

//设置表头:

m_objSheet.Cells[2, 1] = "工程名称";

m_objSheet.Cells[2, 2] = "建设单位";

m_objSheet.Cells[2, 3] = "项目经理信息";

m_objSheet.Cells[4, 3] = "项目经理";

m_objSheet.Cells[4, 4] = "性质";

m_objSheet.Cells[4, 5] = "联系方式";

m_objSheet.Cells[4, 6] = "压证项目经理";

m_objSheet.Cells[2, 7] = "中标公示时间";

m_objSheet.Cells[2, 8] = "合同归档时间";

m_objSheet.Cells[2, 9] = "合同订立时间";

m_objSheet.Cells[2, 10] = "工程概况";

m_objSheet.Cells[3, 10] = "工程地址";

m_objSheet.Cells[3, 11] = "工程内容";

m_objSheet.Cells[3, 12] = "合同工期";

m_objSheet.Cells[3, 13] = "质量目标";

m_objSheet.Cells[3, 14] = "安全目标";

m_objSheet.Cells[2, 15] = "合同价款及支付";

m_objSheet.Cells[3, 15] = "合同价款(元)";

m_objSheet.Cells[3, 16] = "履约保证金";

m_objSheet.Cells[3, 17] = "取费标准";

m_objSheet.Cells[3, 18] = "让利";

m_objSheet.Cells[3, 19] = "付款方式";

m_objSheet.Cells[3, 20] = "支付额";

m_objSheet.Cells[4, 20] = "预付款";

m_objSheet.Cells[5, 20] = "金额";

m_objSheet.Cells[5, 21] = "扣回方式";

m_objSheet.Cells[4, 22] = "工程进度款";

m_objSheet.Cells[4, 23] = "结算办理时限";

m_objSheet.Cells[4, 24] = "结算后收款";

m_objSheet.Cells[2, 25] = "工程开工日期";

m_objSheet.Cells[3, 25] = "类别";

m_objSheet.Cells[3, 26] = "日期";

m_objSheet.Cells[2, 27] = "是否签订目标责任书";

m_objSheet.Cells[2, 28] = "是否公示";

m_objSheet.Cells[2, 29] = "备注";

//写入数值

for (int r = 0; r < list.Count; r++)

{

int t = r + 6;

m_objSheet.Cells[t, 1] = list[r].PName;

m_objSheet.Cells[t, 2] = list[r].Part;

m_objSheet.Cells[t, 3] = list[r].PManager;

m_objSheet.Cells[t, 4] = list[r].PProperty;

m_objSheet.Cells[t, 5] = list[r].Contact;

m_objSheet.Cells[t, 6] = list[r].YZManager;

m_objSheet.Cells[t, 7] = list[r].BidTime;

m_objSheet.Cells[t, 8] = list[r].GuiTime;

m_objSheet.Cells[t, 9] = list[r].AssignTime;

m_objSheet.Cells[t, 10] = list[r].PAddress;

m_objSheet.Cells[t, 11] = list[r].PContent;

m_objSheet.Cells[t, 12] = list[r].TimeLimit;

m_objSheet.Cells[t, 13] = list[r].QualityGoal;

m_objSheet.Cells[t, 14] = list[r].SafeGoal;

m_objSheet.Cells[t, 15] = list[r].CMoney;

m_objSheet.Cells[t, 16] = list[r].EnsureMoney;

m_objSheet.Cells[t, 17] = list[r].MLevel;

m_objSheet.Cells[t, 18] = list[r].RL;

m_objSheet.Cells[t, 19] = list[r].PayType;

m_objSheet.Cells[t, 20] = list[r].YFMoney;

m_objSheet.Cells[t, 21] = list[r].KHWay;

m_objSheet.Cells[t, 22] = list[r].ProcessMoney;

m_objSheet.Cells[t, 23] = list[r].JSTimeLimit;

m_objSheet.Cells[t, 24] = list[r].JSMoney;

m_objSheet.Cells[t, 25] = list[r].OpenType;

m_objSheet.Cells[t, 26] = list[r].OpenTime;

m_objSheet.Cells[t, 27] = list[r].GoalBook;

m_objSheet.Cells[t, 28] = list[r].ShowTip;

m_objSheet.Cells[t, 29] = list[r].Remarks;

}

//保存文件

if (saveFileName != "")

{

try

{

m_objBook.Saved = true;

m_objBook.SaveCopyAs(saveFileName);

fileSaved = true;

}

catch (Exception ex)

{

fileSaved = false;

}

}

else

{

fileSaved = false;

}

//释放Excel对应的对象

if (range != null)

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(range);

range = null;

}

if (m_objSheet != null)

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);

m_objSheet = null;

}

if (m_objBook != null)

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);

m_objBook = null;

}

if (m_objBooks != null)

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);

m_objBooks = null;

}

m_objExcel.Quit();

if (m_objExcel != null)

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);

m_objExcel = null;

}

GC.Collect();

return fileSaved;

}

------------------------------------------------------

从excel报表导入数据库的案例:

(1)先由excel数据转为datatable数据:

public static System.Data.DataTable DataTableforExcel(string strExcelFileName, string strSheetName,int columnsCount)

{

System.Data.DataTable dt = new System.Data.DataTable();

for (int i = 0; i <columnsCount; i++)

{

dt.Columns.Add(new DataColumn());

}

Excel.Application excel = new Excel.Application();

Excel.Workbook m_objBook = (Excel.Workbook)(excel.Workbooks.Add(strExcelFileName));

Worksheet sheet = null;

foreach (Worksheet wsheet in m_objBook.Worksheets)

{

if (wsheet.Name == strSheetName)

{

sheet = wsheet;

break;

}

}

if (sheet != null)

{

int row = 2;

while (true)

{

Range rName = sheet.Cells[row, 1] as Range;

if (rName.Text.ToString().Trim().Length == 0)

{

break;

}

DataRow dr = dt.NewRow();

for (int i = 0; i <columnsCount; i++)

{

Range rContent = sheet.Cells[row, i + 1] as Range;

dr[i] = rContent.Text;

}

dt.Rows.Add(dr);

row += 1;

}

}

excel.Quit();

return dt;

}

}

------------调用方法通过遍历数据行循环插入即可;

C# 导入导出excel文件案例的更多相关文章

  1. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  2. (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  3. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  4. 导入导出Excel文件

    搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包  :  http:// ...

  5. 建议收藏:.net core 使用导入导出Excel详细案例,精心整理源码已更新至开源模板

    还记得刚曾经因为导入导出不会做而发愁的自己吗?我见过自己前同事因为一个导出改了好几天,然后我们发现虽然有开源的库但是用起来却不得心应手,主要是因为百度使用方案的时候很多方案并不能解决问题. 尤其是尝试 ...

  6. java中使用poi导入导出excel文件_并自定义日期格式

    Apache POI项目的使命是创造和保持java API操纵各种文件格式基于Office Open XML标准(OOXML)和微软的OLE复合文档格式(OLE2)2.总之,你可以读写Excel文件使 ...

  7. java导入导出Excel文件

    package poi.excel; import java.io.IOException; import java.io.InputStream; import java.io.OutputStre ...

  8. 简单回顾NPOI导入导出excel文件

    当前环境.net4.0 去官方下下载:  NOPI官网 关于NOPI的详细,这里就不再介绍. 在项目中,我们只需引入  NPOI.dll  就可以了. 接下来..................... ...

  9. SpringMVC 导入导出Excel文件

    /**  * 下载Excel模板 创建一个新的文件用于下载,创建的文件放在缓存中  *   * @param request  * @param response  */ /*  * @Request ...

随机推荐

  1. shell变一些小技巧

    如果我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 能够用${ }分别替换得到不同的值: ${file#*/}:删掉第一个 / 及其左边的字符串:dir1/d ...

  2. scala 101

    * scala 安装: 下载可以执行的文件. 注意版本.  spark 0.8.0 对应的scala 为2.9.3 * scala 编译: 和java 很像: 1,  直接编译脚本: scalac H ...

  3. 使用C#或javascript将Table里的数据导出到Excel

    原文:使用C#或javascript将Table里的数据导出到Excel Demo效果图: 用C#将Table数据导出Excel: 本方法已经将导出excel做成分部视图,引用时只需在视图中使用如下代 ...

  4. CSDN Markdown简明教程4-UML画画

    0.文件夹 文件夹 前言 序列图 1 序列图演示样例 2 序列图语法 流程图 1 流程图演示样例 2 流程图语法 节点定义 节点连接 Gravizo 声明 1. 前言 Markdown是一种轻量级的标 ...

  5. Openstack本学习笔记——Neutron-server服务加载和启动源代码分析(三)

    本文是在学习Openstack过程中整理和总结.因为时间和个人能力有限.错误之处在所难免,欢迎指正! 在Neutron-server服务载入与启动源代码分析(二)中搞定模块功能的扩展和载入.我们就回到 ...

  6. vs2012连接sql2008(错误类型:Could not load file or assembly)

    发生错误: Sql Server2008数据库中有一个数据库. 我想ORM-Entity FrameWork技术,在自己主动了一个项目,建立一个实体类! 解决的方法: 出现上面的情况.是由于缺少了这两 ...

  7. GitBook配置

    GitBook 是一个通过 Git 和 Markdown 来撰写书籍的工具.生成格式有:JSON.ePub.PDF.Website ! ================================ ...

  8. 通过EA导入数据库存在表结构并生成文档

    通过EA导入数据库存在表结构并生成文档   慕课网,程序员升职加薪神器,点击免费学习 目录[-] 导入数据源,表结构 生成表结构的文档 Enterprise Architect 是超级强大项目管理功能 ...

  9. Microsoft dotnetConf 2015

    Microsoft dotnetConf 2015 一些整理   dotnetConf 2015 直播计划: 第一天 (10 个主讲) - .NET Product Teams 主讲人为 .NET 产 ...

  10. 怎样选择PHP的版本

    原文:怎样选择PHP的版本 IIS 如果想使用IIS配置PHP的话,那么需要选择Non-Thread Safe(NTS)版本的PHP Apache 如果你是用的Apache的版本来自Apache Lo ...