谁有导出excel例子!

超凡 2011-08-23 12:53:55
导出excel 能合并单元格,能改变字体大小! 简单易懂!
...全文
208 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
LMAOhuaNL 2011-08-23
  • 打赏
  • 举报
回复
/// <summary> 
/// 将DataTable数据导出到EXCEL,调用该方法后自动返回可下载的文件流
/// </summary>
/// <param name="dtData">要导出的数据源</param>
public static void DataTable1Excel(System.Data.DataTable dtData)
{
System.Web.UI.WebControls.GridView gvExport = null;
// 当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;

if (dtData != null)
{
// 设置编码和附件格式
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
curContext.Response.Charset = "utf-8";

// 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
// 为了解决gvData中可能进行了分页的情况,需要重新定义一个无分页的GridView
gvExport = new System.Web.UI.WebControls.GridView();
gvExport.DataSource = dtData.DefaultView;
gvExport.AllowPaging = false;
gvExport.DataBind();

// 返回客户端
gvExport.RenderControl(htmlWriter);
curContext.Response.Write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />" + strWriter.ToString());
curContext.Response.End();
}
}




/// <summary>
/// 直接输出Excel
/// </summary>
/// <param name="dtData"></param>
public static void DataTable2Excel(System.Data.DataTable dtData)
    {
  System.Web.UI.WebControls.DataGrid dgExport = null;
      // 当前对话
      System.Web.HttpContext curContext = System.Web.HttpContext.Current;
      // IO用于导出并返回excel文件
      System.IO.StringWriter strWriter = null;
      System.Web.UI.HtmlTextWriter htmlWriter = null;

      if (dtData != null)
      {
        // 设置编码和附件格式
        curContext.Response.ContentType = "application/vnd.ms-excel";
        curContext.Response.ContentEncoding =System.Text.Encoding.UTF8;
        curContext.Response.Charset = "";

        // 导出excel文件
        strWriter = new System.IO.StringWriter();
        htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

        // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
        dgExport = new System.Web.UI.WebControls.DataGrid();
        dgExport.DataSource = dtData.DefaultView;
        dgExport.AllowPaging = false;
        dgExport.DataBind();

        // 返回客户端
        dgExport.RenderControl(htmlWriter);  
        curContext.Response.Write(strWriter.ToString());
        curContext.Response.End();
      }
    }

bdmh 2011-08-23
  • 打赏
  • 举报
回复
看msdn的vba的资料
inttoint 2011-08-23
  • 打赏
  • 举报
回复
回帖加分——用来提问
hncelib 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wangyong0921 的回复:]
http://blog.csdn.net/wangyong0921/article/details/6550399
[/Quote]

能否加你QQ,向你讨教讨教!

有些地方不懂!
xiongxyt2 2011-08-23
  • 打赏
  • 举报
回复
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;



合并
Range range = null;// 创建一个空的单元格对象
range = sheet.get_Range("B2", "D4");// 获取多个单元格
range.Merge(Missing.Value); // 合并单元格



字体等属性
range = sheet.get_Range("A1", Missing.Value);// 获取单个单元格
range.RowHeight = 20; // 设置行高
range.ColumnWidth = 20; // 设置列宽
range.Borders.LineStyle = 1; // 设置单元格边框
range.Font.Bold = true; // 加粗字体
range.Font.Size = 20; // 设置字体大小
range.Font.ColorIndex = 5; // 设置字体颜色




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

/// <param name="data">要写入的数据表</param>

/// <param name="startRow">Excel中的起始行</param>

/// <param name="startColumn">Excel中的起始列</param>

public void WriteData(System.Data.DataTable data, int startRow, int startColumn)

{

for (int i = 0; i <= data.Rows.Count - 1; i++)

{

for (int j = 0; j <= data.Columns.Count - 1; j++)

{

//在Excel中,如果某单元格以单引号“'”开头,表示该单元格为纯文本,因此,我们在每个单元格前面加单引号。

myExcel.Cells[startRow + i, startColumn + j] = "'" + data.Rows[i][j].ToString();

}

}

}




路人乙e 2011-08-23
  • 打赏
  • 举报
回复
excel就是table
拼接HTML的table标签然后下载保存成excel就行了
超凡 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 isjoe 的回复:]
引用楼主 hncelfhv 的回复:
导出excel 能合并单元格,能改变字体大小! 简单易懂!



DevExpress的表格控件支持导出Excel,表格什么样子导出的Excel就是什么样子。
[/Quote]

啥意思?
超凡 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ajaxtop 的回复:]
这个有加样式的方法,自己找样式看字体如何改
[/Quote]

不是用gridview 导出!

后台有提供数据源!

由一个方法返回一个ilist集合!

数据从ilist集合中取简单,就是制定excel格式比较难,有的地方是合并多个单元格,有的地方改变了底色
isjoe 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 hncelfhv 的回复:]
导出excel 能合并单元格,能改变字体大小! 简单易懂!
[/Quote]


DevExpress的表格控件支持导出Excel,表格什么样子导出的Excel就是什么样子。
pwxcomer 2011-08-23
  • 打赏
  • 举报
回复

public static bool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath)
{
Microsoft.Office.Interop.Excel.Application app =
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
app.Visible = false;
Workbook wBook = app.Workbooks.Add(true);
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
if (excelTable.Rows.Count > 0)
{
int row = 0;
row = excelTable.Rows.Count;
int col = excelTable.Columns.Count;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
string str = excelTable.Rows[i][j].ToString();
wSheet.Cells[i + 2, j + 1] = str;
}
}
}

int size = excelTable.Columns.Count;
for (int i = 0; i < size; i++)
{
wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName;
}
//设置禁止弹出保存和覆盖的询问提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
//保存工作簿
wBook.Save();
//保存excel文件
app.Save(filePath);
app.SaveWorkspace(filePath);
app.Quit();
app = null;
return true;
}
catch (Exception err)
{
MessageBox.Show("导出Excel出错!错误原因:" + err.Message, "提示信息",
MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
finally
{
}
}


range.NumberFormatLocal = "@"; //设置单元格格式为文本
range = (Range)worksheet.get_Range("A1", "E1"); //获取Excel多个单元格区域:本例做为Excel表头
range.Merge(0); //单元格合并动作
worksheet.Cells[1, 1] = "Excel单元格赋值"; //Excel单元格赋值
range.Font.Size = 15; //设置字体大小
range.Font.Underline=true; //设置字体是否有下划线
range.Font.Name="黑体"; 设置字体的种类
range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //设置字体在单元格内的对其方式
range.ColumnWidth=15; //设置单元格的宽度
range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb(); //设置单元格的背景色
range.Borders.LineStyle=1; //设置单元格边框的粗细
range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb()); //给单元格加边框
range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone; //设置单元格上边框为无边框
range.EntireColumn.AutoFit(); //自动调整列宽
Range.HorizontalAlignment= xlCenter; // 文本水平居中方式
Range.VerticalAlignment= xlCenter //文本垂直居中方式
Range.WrapText=true; //文本自动换行
Range.Interior.ColorIndex=39; //填充颜色为淡紫色
Range.Font.Color=clBlue; //字体颜色
xlsApp.DisplayAlerts=false; //保存Excel的时候,不弹出是否保存的窗口直接进行保存

超凡 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lmaohuanl 的回复:]
C# code

/// <summary>
/// 将DataTable数据导出到EXCEL,调用该方法后自动返回可下载的文件流
/// </summary>
/// <param name="dtData">要导出的数据源</param>
public static void DataTable1Excel(System.Data.DataT……
[/Quote]

谢了! 不过不行,我要能操作excel表格合并与改变字体大小!
超凡 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]
看msdn的vba的资料
[/Quote]

呵呵,请提供一个链接!

不要用vb的!

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧