目前在开发中遇到多个需要,需要将数据库查出来的表格数据存成Excel文件。现做如下记录,方便自己以后温顾。
1、数据库查数据,存成List<T>格式的数据。
2、设计Excel的表头
3、设计需要合并的列(如果标题只有一行,则不需要)
Dictionary<string, int> mergeCount = new Dictionary<string, int>();
mergeCount.Add("StartColumn", 10);
mergeCount.Add("Offset", 3);
mergeCount.Add("EndColumn", 21);
4、然后调用通用的自定义导Excel的方法。
public class ExcelHelper
{
/// <summary>
/// 下载方法
/// </summary>
/// <param name="list"></param>
/// <param name="fileName"></param>
/// <param name="title"><"字段名","中文名"></param>
public static void DownExcel(IList list, string fileName, DataTable title = null,Dictionary<string,int> mergeCount=null)
{
try
{
ExcelCommHelper excel = new ExcelCommHelper();
excel.CreateWorkbook();
excel.CreateWorksheet("Sheet1");
if (list != null && list.Count > 0)
{
List<string> field = new List<string>();//所有字段名
List<HashListHelper> data = ToHashtable(list);//转换为Hashtable
int jj = 0;
//处理标题行
foreach (string item in data[0].Keys)
{
int _col = jj + 1;
if (title != null)
{
if (title.Rows[0].Table.Columns.Contains(item.ToString()))
{
//取客户端标题
if (mergeCount == null)
{
//标题行只有一行
excel.SetCells(1, _col, title.Rows[0][item.ToString(