第一步:引用文件

using NPOI.HSSF.UserModel;
using System.Data;
using CTUClassLibrary;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.SS.Util;
using NPOI.HSSF.Util;

这些文件,CTUClassLibrary;是自己写大sql查询语句,可以不用。其他的都需要引用

主体代码:

  protected void Page_Load(object sender, EventArgs e)
{
ZHLSExcel();
}
HSSFWorkbook workbook = new HSSFWorkbook();
//设置最初的列
protected List<string> ListZM = new List<string>() { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", };
public void ZHLSExcel()
{
DataTable dt = new DataTable();
string strWhere = " BankID=0";
//一下是其他js传过来的参数
if (Request.Params["opstate"] != null)
{
string opstate = Request.Params["opstate"].ToString().Trim();
if (opstate.Trim().Length > && opstate != "")
{
strWhere += " and ops='" + Request.Params["opstate"].ToString().Trim() + "'";
}
}
string sql = " select hu as oney, df as money from table where" + strWhere;
classDBOP dbop = new classDBOP();
dt = dbop.ExcSql(sql, ); //sql插叙结果集。可以自己写
// 日期 金额 经办人 财务 出纳 对方账户
string title = "流水表";//标题
string[] biaoTou = new string[] { "日期", "收", "支", "经办人", "财务", "出纳", "对方账户" };//表头
try
{
MemoryStream ms = new MemoryStream();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("newSheet1");
string fileName = "流水表.xls";//文件名
string filePath = Server.MapPath("~/TMFile/OAFile/BB_Report/CDay/" + fileName);//文件路径
#region 填充标题
IRow row = sheet.CreateRow();//第几行
row.HeightInPoints = ;//行高
ICell cell = row.CreateCell();//在行中添加一列
cell.SetCellValue(title);//设置列的内容
ICellStyle style = workbook.CreateCellStyle();
style.Alignment = HorizontalAlignment.CENTER;
style.VerticalAlignment = VerticalAlignment.CENTER;
IFont font = workbook.CreateFont();
font.FontHeightInPoints = ;
style.SetFont(font);
cell.CellStyle = style;
int cellRows = dt.Rows.Count;
int cellNo = dt.Columns.Count;
sheet.AddMergedRegion(new CellRangeAddress(, , , cellNo - ));
CellRangeAddress cellRangeAddress = new CellRangeAddress(, , , cellNo - );
sheet.AddMergedRegion(cellRangeAddress);
#endregion
#region 填充表头
IRow row1 = sheet.CreateRow();
for (int j = ; j < biaoTou.Length; j++)
{
//吧biaoTou表头得类容写入
row1.CreateCell(j).SetCellValue(biaoTou[j]);
}
#endregion
#region 填充内容
decimal allshou = , allzhi = ;
for (int r = ; r < dt.Rows.Count; r++)
{
IRow rows = sheet.CreateRow(r + );//cellRows + 2
for (int c = ; c < dt.Columns.Count; c++)
{
rows.CreateCell(c).SetCellValue(dt.Rows[r][c].ToString());
//读取dt里面的数据。
}
allshou += Convert.IsDBNull(dt.Rows[r]["oney"]) ? : decimal.Parse(dt.Rows[r]["oney"].ToString());
allzhi += Convert.IsDBNull(dt.Rows[r]["money"]) ? : decimal.Parse(dt.Rows[r]["money"].ToString()); }
#endregion
#region 尾部
IRow rowM = sheet.CreateRow(cellRows + );
rowM.HeightInPoints = ;
ICell ceeM = rowM.CreateCell();
ceeM.SetCellValue("收入:" + allshou.ToString());
ceeM = rowM.CreateCell();
ceeM.SetCellValue("支出:" + allzhi.ToString()); IRow rowAdd = sheet.CreateRow(cellRows + );
rowAdd.HeightInPoints = ;
ICell ceeAdd = rowAdd.CreateCell();
ceeAdd.SetCellValue("制单人:" + Session["Name"].ToString().Trim() + " 日期:" + DateTime.Now.ToShortDateString());
IRow rowEnd = sheet.CreateRow(cellRows + );
rowEnd.HeightInPoints = ;
ICell cellEnd = rowEnd.CreateCell();
cellEnd.SetCellValue("此表由XXXXX" + DateTime.Now.ToString("yyyy年MM月dd日") + "导出 ");
ICellStyle styleEnd = workbook.CreateCellStyle();
styleEnd.Alignment = HorizontalAlignment.RIGHT;
styleEnd.VerticalAlignment = VerticalAlignment.CENTER;
IFont fontEnd = workbook.CreateFont();
fontEnd.FontHeightInPoints = ;
fontEnd.Color = HSSFColor.GREY_50_PERCENT.index;
fontEnd.Boldweight = (short)FontBoldWeight.BOLD;
styleEnd.SetFont(fontEnd);
cellEnd.CellStyle = styleEnd;
sheet.AddMergedRegion(new CellRangeAddress(cellRows + , cellRows + , , cellNo - ));//起始行号,终止行号, 起始列号,终止列号
#endregion
#region 保存
workbook.Write(ms);
using (FileStream stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
//创建文件,将workbook写入文件
workbook.Write(stream);
}
workbook = null;
ms.Close();
ms.Dispose();
FileInfo file = new FileInfo(filePath);
Response.Clear();
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
//添加头信息,为"文件下载/另存为"对话框指定默认文件名
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.AddHeader("Content-Length", file.Length.ToString());//添加头信息,指定文件大小,让浏览器能够显示下载进度
Response.ContentType = "application/ms-excel";//指定返回的是一个不能被客户端读取的流,必须被下载
Response.WriteFile(file.FullName);//把文件流发送到客户端
Response.End();//停止页面的执行
#endregion
}
catch (System.Exception ex)
{
} }

我觉得这方法不错,自己记录一下。也给你看看

以下是结果图

C# 创建execl文件 并且填充数据的更多相关文章

  1. C#创建Excel文件并将数据导出到Excel文件

    工具原料: Windows 7,Visual Studio 2010, Microsoft Office 2007 创建解决方案 菜单>新建>项目>Windows窗体应用程序: 添加 ...

  2. python取出前端传入execl文件中的数据

    from openpyxl import load_workbook #获取前台传入的文件 uploadedFile = request.FILES.get('file') #获取execl文件 wb ...

  3. 向EXECL文件中导入数据的同时插入图片

    因为项目需要在导出数据到EXECL文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下. 首先代码写好之后放测试服务器上去执行的时候报错了,报检索 COM 类工厂中 CLSID 为 {0 ...

  4. 数据库(一)--通过django创建数据库表并填充数据

    django是不能创建数据库的,只能够创建数据库表,因此,我们在连接数据库的时候要先建立一个数据库. 在models.py中 from django.db import models class Pu ...

  5. Delphi - 创建text文件并添加数据到文件中

    创建文本文件 代码如下: //创建一个文本文件 procedure CreateTextFile(); var AssignFile(TF,'C:\tmp\1.txt'); ReWrite(TF); ...

  6. asp.net读取execl模板并填充数据,关闭进程

    <head runat="server"> <title></title> <script src="Scripts/jquer ...

  7. Android创建文件夹及文件并写入数据

    package elwin.fei.mobileaudio; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  8. 使用POI读取/创建Execl(.xlsx)文件

    最近项目中用到了解析Execl表格的功能,在网上百度了一下自己写了一个小Demo.由于项目中使用的是Execl2007,就是后缀为.xlsx的,所以只研究了解析和创建Execl2007的文件,解析Ex ...

  9. MeteoInfoLab脚本示例:创建netCDF文件(合并文件)

    在MeteoInfoLab中增加了创建netCDF文件并写入数据的功能,这里利用合并多个netCDF文件为一个新的netCDF文件为例.1.创建一个可写入的netCDF文件对象(下面用ncfile表示 ...

随机推荐

  1. UVA 10790 How Many Points of Intersection?

      How Many Points of Intersection?  We have two rows. There are a dots on the top row and b dots on ...

  2. 一键分享到新浪微博、腾讯微博、搜狐微博、人人网、开心网、百度收藏等js代码大全

    下面给大家一些分享的js代码,只要把代码插入自己的网页中稍微修改一下图片路径就可以用了,好了,废话少说,上代码:  document.writeln("<b>喜欢本文,那就分享到 ...

  3. [linux] linux知识积累(不断更新中…)

    一.vim知识 f(find)命令也可以用于移动,fx将找到光标后第一个为x的字符,3fd将找到第三个为d的字符. D 删除当前字符至行尾.D=d$ :split或new 打开一个新窗口,光标停在顶层 ...

  4. (2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度

    AWK内存泄露: 这几天本来就很郁闷,遇到搭建在hadoop平台上的hive平台有很多问题.写个好好的sql语句,总是说这个错误那个错误.然后,今天遇到一个更加郁闷的问题,居然分析淘宝数据的awk都运 ...

  5. Java中读取文件

    Java中读取文件,去除一些分隔符,保存在多维数组里面 public void readFile(String filePath) { File file=new File(filePath); Ar ...

  6. (转)C#在父窗口中调用子窗口的过程(无法访问已释放的对象)

    C#在父窗口中调用子窗口的过程: 1. 创建子窗口对象 2. 显示子窗口对象   笔者的程序中,主窗体MainFrm通过菜单调用子窗口ChildFrm.在窗体中定义了子窗口对象,然后在菜单项点击事件中 ...

  7. HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-ISAPI-4.0_32bit”在其模块

    问题: 系统是win7.今天把我做过的项目发布后,在IIS上运行时一直出现一个错误,HTTP 错误500.21-Internal Server Error.处理程序“PageHandlerFactor ...

  8. AsyncTask 与 对话框显示 view.WindowManager$BadTokenException: Unable to add window…is not valid; is your a

    最近遇到一个奇葩的问题,好郁闷 之前也没有仔细看.问题偶尔出现一次.再去查看日志时,出现 view.WindowManager$BadTokenException: Unable to add win ...

  9. pyqt MainWindow记录内容

    class Texts(QtGui.QMainWindow,Ui_MainWindow): def __init__(self,parne=None): super(Texts,self).__ini ...

  10. 表单验证插件jquery.validate的使用方法演示

    jQueryValidate表单验证效果 jquery.validate验证错误信息的样式控制 <!--validate验证插件的基础样式--> input.error{border: 1 ...