sql导出Excel表

zhengchengbaishi 2011-05-29 09:38:16
数据库中有一张表,我想导出 一张空表到Excel中,Excel中只显示该表中的字段,数据不用导出
导出的效果是这样的:
a1 a2 a3 a4
我想导出一张只有字段的空表,这样别人可以在这个空表中填数据,然后我可以把这张表中的数据再导入到数据库中。
...全文
281 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
pwxcomer 你能把’Windows窗体应用程序‘这些代码该写成我上面那样能运行的代码不?帮个忙我把这50分都给你,如果不够我可以再加。
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
我用的是新建网站-->asp.net网站,一直都是这样用的,因为我现在还没有学习三层架构,你说的那个新建项目应该是在具备一些三层的基础上才那样用的吧?
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
你新建的是“Windows窗体应用程序”?怎么会有System.Web?
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
错误 1 “ASP.default2_aspx.GetTypeHashCode()”: 没有找到适合的方法来重写
错误 2 “ASP.default2_aspx.ProcessRequest(System.Web.HttpContext)”: 没有找到适合的方法来重写
错误 3 “ASP.default2_aspx”不实现接口成员“System.Web.IHttpHandler.IsReusable”
引用添加过了,可是又出现了这些问题,什么情况?
xuzysun 2011-05-29
  • 打赏
  • 举报
回复
要先添加COM组件Office 11.0 Object Library引用!!
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
你首先新建一个项目,选择Windows窗体应用程序,添加引用COM组件,Microsoft Office 11.0 Object Library ,然后再添加引用-》.Net下的 Microsoft.Office.Interop.Excel 11.0.0.0 ,然后将
using System.IO;
using Microsoft.Office.Interop.Excel;
using System.Reflection;
复制到系统自动生成的using后面,添加一个Button,点击button进入后台,将代码复制进去,再试试。
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
没有啊,
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
命名空间“Microsoft”中不存在类型或命名空间名称“Office”(是否缺少程序集引用?)
命名空间“System”中不存在类型或命名空间名称“Windows”(是否缺少程序集引用?)
这俩处都有问题。
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zhengchengbaishi 的回复:]

它这次提示错误 应输入‘ ;’
[/Quote]

看看某条语句后是不是缺少了“;”
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
它这次提示错误 应输入‘ ;’
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
03的
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
你用的Office是什么版本的?03?07?
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pwxcomer 的回复:]

刚才写错了,是Microsoft Office 11.0 Object Library ,O(∩_∩)O~
[/Quote]

楼上,为什么这句还是有问题啊?
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
你把GC.Collect();删掉试试吧,那是用于内存回收的。
路人乙e 2011-05-29
  • 打赏
  • 举报
回复
Response.Clear();
Response.AppendHeader("Content-Disposition","attachment;filename=data.xls");
Response.ContentType = "application/vnd.ms-excel";
foreach(string column in columnCollect){
Response.Write(column+"\t");
}
Response.End();
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
GC.Collect();
楼上这个引用不存在啊,还有你是用三层架构写的吗?我现在还不会用三层。
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
刚才写错了,是Microsoft Office 11.0 Object Library ,O(∩_∩)O~
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
在项目中选择添加引用COM组件,Microsoft Excel 11.0 Object Library ( Excel 2003 )(如果是Excel2000则是9.0版本,Excel2007则是 12.0版本),然后再添加引用-》.Net下的 Microsoft.Office.Interop.Excel 11.0.0.0
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
命名空间“Microsoft”中不存在类型或命名空间名称“Office”(是否缺少程序集引用?)

楼上的为什么会这个问题啊?
pwxcomer 2011-05-29
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Office.Interop.Excel;
using System.Reflection;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
DataSet HeadDs = new DataSet();
System.Data.DataTable HeaderTable = new System.Data.DataTable("Header");
DataColumn header = new DataColumn("header", typeof(string));
header.MaxLength = 50;
HeaderTable.Columns.Add(header);
string[] DefaultHeader = { "a1","a2","a3","a4"};
for (int i = 0; i < DefaultHeader.Length; i++)
{
FillDataTable(HeaderTable, DefaultHeader[i]);
}
HeadDs.Tables.Add(HeaderTable);
string absFileName =@"d:\"+ DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
//导出到Excel文件中
ExportToExcel(HeadDs.Tables[0], absFileName);

}


public void FillDataTable(System.Data.DataTable HeaderTable, string headername)
{
DataRow drheader = HeaderTable.NewRow();
drheader["header"] = headername;
HeaderTable.Rows.Add(drheader);
HeaderTable.AcceptChanges();
}

public static void ExportToExcel(System.Data.DataTable head, string absFileName)
{
Microsoft.Office.Interop.Excel.Application excel = null;
_Workbook xBk = null;
_Worksheet xSt = null;
try
{
excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
xBk = excel.Workbooks.Add(true);

if (null == xSt)
{
xSt = (_Worksheet)xBk.Worksheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);
}
//设置SheetName
xSt.Name = "Excel";

//题头导出
int rowCount = head.Rows.Count;
int colCount = head.Columns.Count;
object[,] dataArray = new object[colCount, rowCount];
for (int i = 0; i < rowCount; i++)
{
for (int j = 0; j < colCount; j++)
{
dataArray[j, i] = head.Rows[i][j];
}
}
xSt.get_Range(xSt.Cells[1, 1], xSt.Cells[colCount, rowCount]).Value2 = dataArray;
xSt.Columns.AutoFit();

//删除Sheet1
excel.DisplayAlerts = false; //注意一定要加上这句
((Microsoft.Office.Interop.Excel.Worksheet)xBk.Worksheets["Sheet1"]).Delete();
excel.DisplayAlerts = true;//注意一定要加上这句

object objOpt = System.Reflection.Missing.Value;
excel.Visible = false;

xBk.SaveCopyAs(absFileName);
xBk.Close(false, null, null);
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
xBk = null;
excel = null;
xSt = null;
GC.Collect();

}
catch (Exception e)
{
xBk.Close(false, null, null);
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
xBk = null;
excel = null;
xSt = null;
GC.Collect();
}
}

}
}
zhengchengbaishi 2011-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 maco_wang 的回复:]

你是要用sql在SQL SERVER 中处理?
还是用C#在程序中处理呀?
[/Quote]

要C#在程序中处理
加载更多回复(6)

110,534

社区成员

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

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

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