首页 新闻 会员 周边

C# 导出excel

0
悬赏园豆:20 [已解决问题] 解决于 2010-08-16 09:30

  想要实现一个导出excel的功能,在COM中添加了Microsoft Excel 12.0 Object Library,然后添加 using excel=Microsoft.Office.Interop.Excel,然后使用语句 var app=excel.ApplicationClass().提示Interop Type "Microsoft.Office.Interop.Excel.ApplicationClass" can't be embedded.

  我用的是Framework4.0,机器上安装的是office 2007.求教!

奔跑*随心的主页 奔跑*随心 | 初学一级 | 园豆:140
提问于:2010-08-14 15:13
< >
分享
最佳答案
0

var app = new Microsoft.Office.Interop.Excel.Application();

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2010-08-14 16:55
其他回答(3)
0

可以参考下这个题目:

http://space.cnblogs.com/q/16521/

收获园豆:10
HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-14 17:52
0

用文件流去做吧,你这样子一个格子一个格子的会搞死你的,根本用不到什么excel组件

小AI | 园豆:354 (菜鸟二级) | 2010-08-14 18:25
你又不知道别人用来干啥,就推荐用文件流。如果只是为了一个格子一个格子的填写表格数据,excel还有数据绑定功能,还可以使用odbc用sql插入都比你提供的文件流要简单高效的多,另外,openxml的方式没使用过。
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-08-14 19:35
0

调用execl 组建 在生成的时候 会给服务器增加负担 这个方式是不可取的。

可以用 http方式 直接生成。

 

1 public void CreateExcel(DataTable dt)
2 {
3 try
4 {
5 string fileName = DateTime.Now.Ticks + EXCELPOSTFIX;
6
7 HttpResponse resp;
8 resp = Page.Response;
9 resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
10 resp.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
11 string colHeaders = "", ls_item = "";
12
13 //定义表对象与行对象,同时用DataSet对其值进行初始化
14 //DataTable dt = ds.Tables[0];
15  
16 DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
17   int i = 0;
18 int cl = dt.Columns.Count;
19
20 //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
21 for (i = 0; i < cl; i++)
22 {
23 if (i == (cl - 1))//最后一列,加n
24 {
25 colHeaders += dt.Columns[i].Caption.ToString() + "\n";
26 }
27 else
28 {
29 colHeaders += dt.Columns[i].Caption.ToString() + "\t";
30 }
31
32 }
33 resp.Write(colHeaders);
34 //向HTTP输出流中写入取得的数据信息
35
36 //逐行处理数据
37 foreach (DataRow row in myRow)
38 {
39 //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
40 for (i = 0; i < cl; i++)
41 {
42 string rows = CommMoted.cuthtml2(row[i].ToString());//自定义类,去除掉文本中的HTML 样式
43 if (i == (cl - 1))//最后一列,加n
44 {
45 ls_item += rows + "\n";
46 }
47 else
48 {
49 ls_item += rows + "\t";
50 }
51
52 }
53 resp.Write(ls_item);
54 ls_item = "";
55
56 }
57
58 // resp.Write("总计:" + this.lab1.InnerText.Trim() + "列," + this.lab2.InnerText.Trim() + "辆");
59 resp.End();
60 //Response.Write("<script>alert('导出成功!');<script>");
61
62 }
63 catch(Exception ex)
64 {
65 //return "导出失败!" + ex.Message;
66 //Response.Write("<script>alert('导出失败!请检查计算机上是否已安装excel');<script>");
67 }
68 }
yeyang | 园豆:418 (菜鸟二级) | 2010-08-16 08:49
我要在excel中画一个chart,用你这个方法怎么办?
支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2010-08-16 09:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册