C# 把数据写入Excel

本文介绍了一种使用C#将数据从DataView对象导出到Excel的方法。该方法能够处理不同数据类型(如字符串和日期)的列,并为它们应用适当的格式。此外,还实现了自动调整列宽、绘制边框以及设置标题等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using

System;


using

System.Data;


using

Excel;

namespace

LogicLayer


{

///

<summary>


/// OutputExcel 的摘要说明

///

</summary>


public class OutputExcel

{

public OutputExcel(DataView dv,string str)

{

//


// TODO: 在此处添加构造函数逻辑

//


Excel.Application excel;

int rowIndex=4;

int colIndex=1;


Excel._Workbook xBk;

Excel._Worksheet xSt;


excel= new Excel.ApplicationClass();;

xBk = excel.Workbooks.Add(true);

xSt = (Excel._Worksheet)xBk.ActiveSheet;


//


//取得标题

//


foreach(DataColumn col in dv.Table.Columns)

{

colIndex++;

excel.Cells[4,colIndex] = col.ColumnName;

xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;

//

}


//


//取得表格中的数据

//


foreach(DataRowView row in dv)

{

rowIndex ++;

colIndex = 1;

foreach(DataColumn col in dv.Table.Columns)

{

colIndex ++;

if(col.DataType == System.Type.GetType("System.DateTime"))

{

excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");

xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐

}

else

if(col.DataType == System.Type.GetType("System.String"))

{

excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();

xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐

}

else

{

excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();

}

}

}

//


//加载一个合计行

//


int rowSum = rowIndex + 1;

int colSum = 2;

excel.Cells[rowSum,2] = "ºÏ¼Æ";

xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

//


//设置选中的部分的颜色

//


xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();

xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种

//


//

//


excel.Cells[2,2] = str;

//


//设置整个报表的标题格式

//


xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;

xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;

//


//设置报表表格为最适应宽度

//


xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();

xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();

//


//设置整个报表的标题为跨列居中

//


xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();

xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenterAcrossSelection;

//


//绘制边框

//


xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;

xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlThick;//设置左边线加粗

xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//设置上边线加

xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlThick;//设置右边线加粗

xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//设置下边线加粗

//


//显示效果

//


excel.Visible=true;

}

}

}

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/CQBSBJIANXY/archive/2009/10/29/4745012.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值