RT,求个能用的源码,感激不尽!
解决方案 »
- textbox控件mode为password,每次点击button为什么会刷新
- 如何获得Repeater中的ItemTemplate选中一行控件数据
- 如何在Web上 打印之Ems信封套
- 如何删除treeview中知道节点名的节点?
- 求助关于datagrid不能分页的问题
- 请教各位大师:关于在已划分页面中使用HyperLink的问题
- 在HTML页面中加如IFRAME镶入ASPX留言本页面后,页面能正常显示,但留言链接无法打开,提示错误!!急!!!
- 上传文件提示:“未将对象引用设置到对象的实例”,如果解决?
- 請問asp中的recordset在asp.net中怎樣處理
- 或者说怎样实现树形算法
- 设置一个信息的刷新时间点,如何自动让他每天都能刷新
- EventLog的问题
http://topic.csdn.net/u/20100721/15/87625976-1489-4753-aade-4290211bd1d0.html
方法2:做成CSV文件(不是真正的Excel,但可以用Excel打开,效率高无EXCEL版本差异)
方法3:通过Excel COM组件一个个单元格赋值(效率低,不推荐)
public static void Export2Xls<T>(List<T> data, string filename, bool exportHeader = true)
{
if (File.Exists(filename))
File.Delete(filename);
Excel._Application xlsApp = null;
Excel._Workbook xlsBook = null;
Excel._Worksheet xstSheet = null;
var type = typeof(T);
var properties = type.GetProperties();
var buffer = new StringBuilder();
if (exportHeader)
{
xlsApp = new Excel.ApplicationClass();
xlsBook = xlsApp.Workbooks.Add();
xstSheet = (Excel._Worksheet)xlsBook.Worksheets[1];
if (exportHeader)
{
foreach (var property in properties)
buffer.Append(property.Name + "\t");
buffer.AppendLine();
}
foreach (var row in data)
{
foreach (var property in properties)
buffer.Append(property.GetValue(row, null) + "\t");
buffer.AppendLine();
}
System.Windows.Forms.Clipboard.SetDataObject("");
// 放入剪切板
System.Windows.Forms.Clipboard.SetDataObject(buffer.ToString());
var range = (Excel.Range)xstSheet.Cells[1, 1];
range.Select();
xstSheet.Paste();
// 清空剪切板
System.Windows.Forms.Clipboard.SetDataObject("");
xlsBook.SaveAs(filename);
}
}
public static void Export2CSV<T>(List<T> data, string filename, bool exportHeader = true)
{
if (File.Exists(filename))
File.Delete(filename);
var type = typeof(T);
var properties = type.GetProperties();
var buffer = new StringBuilder();
if (exportHeader)
{
for (var i = 0; i < properties.Length; i++)
{
buffer.AppendFormat("\"{0}\"", properties[i].Name);
if (i < properties.Length - 1)
buffer.Append(",");
}
buffer.AppendLine();
}
for (var i = 0; i < data.Count; i++)
{
for (var j = 0; j < properties.Length; j++)
{
buffer.AppendFormat("\"{0}\"", properties[j].GetValue(data[i], null).ToString());
if (j < properties.Length - 1)
buffer.Append(",");
}
buffer.AppendLine();
}
File.WriteAllText(filename, buffer.ToString());
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fangxinggood/archive/2010/12/26/6099621.aspx
/// <summary>
///将list泛型数组转换成datatable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="list"></param>
/// <param name="header"></param>
/// <returns></returns>
public DataTable ListToDataTable<T>(IList<T> list)
{
DataTable dt = new DataTable();
DataRow dr;
Boolean columnHeader = true;
foreach (T t in list)
{
Type ut = t.GetType();
PropertyInfo[] plist = ut.GetProperties();
dr = dt.NewRow();
foreach (PropertyInfo p in plist)
{
//填充列头
if (columnHeader)
{
if (!dt.Columns.Contains(p.Name))
{
dt.Columns.Add(p.Name);
}
}
Object value = ut.GetProperty(p.Name).GetValue(t, null);
dr[p.Name] =value.ToString() ;
}
dt.Rows.Add(dr);
if (columnHeader)
{
columnHeader = false;
}
}
return dt;
} /// <summary>
/// 下载EXCEL
/// </summary>
/// <param name="dt"></param>
/// <param name="fileName"></param>
public void DownExcel(DataTable dt,string fileName)
{
Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];
sheet.FreezePanes(1, 1, 1, 0);//冻结第一行
AddHeader(sheet, dt);
AddBody(sheet, dt);
sheet.AutoFitColumns();//让各列自适应宽度
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
workbook.Save(DateTime.Now.ToShortDateString() + fileName + DateTime.Now.ToShortDateString() + ".xls", SaveType.OpenInBrowser, FileFormatType.Default, response);
}
/// <summary>
/// 导出Execl(带表头)
/// </summary>
/// <param name="dt"></param>
/// <param name="FileName"></param>
/// <param name="response"></param>
public void CreateExcel(DataTable dt, string FileName, HttpResponse response)
{
HttpResponse resp;
resp = response;
FileName = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(FileName));
resp.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName + ".xls");
string colHeaders = "", ls_item = ""; //定义表对象与行对象,同时用DataSet对其值进行初始化 DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count; //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
colHeaders += dt.Columns[i].Caption.ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\n";
}
else
{
colHeaders += dt.Columns[i].Caption.ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\t";
} }
resp.Write(colHeaders.Replace("\r", " "));
//向HTTP输出流中写入取得的数据信息 //逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
ls_item += row[i].ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\n";
}
else
{
ls_item += row[i].ToString().Replace("\n", " ").Replace("\"", "\"\"") + "\t";
} }
resp.Write(ls_item.Replace("\r", " "));
ls_item = ""; }
resp.End();
}