当前位置:首页 » 数据仓库 » c数据库导出到excel
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c数据库导出到excel

发布时间: 2022-05-23 17:46:12

‘壹’ c# 将数据库导出EXCEL

sql语句即可实现excel和sql的导入导出

在按钮事件中执行相关存储过程:

******* 导出到excel
EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'

/*********** 导入Excel
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255))+' ' 转换后的别名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

---------------------------------------------------------------

EXCEL TO SQL SERVER
先用ODBC建立一个数据源,数据源指向sql server的表,然后用TTABLE控件联上数据库,
再建立一个OleObject,然后用Append,Post把数据导入到EXCEL表。
实例:
var
MSExcel:Variant;//定义一个全程变量

MSExcel := CreateOleObject('Excel.Application');
MSExcel.WorkBooks.Open(Edit1.Text);//创建一个OleObject

Table.Active:=true;
Table.Append;
Table.FieldByName('字段名').Value:=MSExcel.Cells[rows_i,1].Value;
Table.Post;//实现导入

‘贰’ 如何将C语言的输出倒入Excel工作表

可以先用C语言格式化输出为EXCEL可以导入的文本文件,再使用EXCEL手工导入。具体导入方法可参阅《往Excel中导入TXT文本数据的三种方法》:http://tech.sina.com.cn/s/2006-05-12/1042934532.shtml
这种方法最简单, 但自动化程度低, 不能集成到你的C程序中去.

如果用C/C++创建EXCEL, 可以使用ADO或者ODBC.
如果用C++/ODBC, 可参阅《直接通过ODBC读写Excel表格文件》:http://www.vckbase.com/document/viewdoc/?id=421
还有《针对Excel表格文件操作的编程实现》:http://www.vckbase.com/document/viewdoc/?id=693
如果你的程序是用C++写的, 推荐使用以上方法.

如果用C/ODBC, 稍微麻烦一点。我以前写过一个,好像是根据一个C++的类改写成C的, 时间太长, 记不得出处了. 现在给你做参考:
三个接口函数:
OpenExcel(): 创建或打开Excel文件的一个工作表
AppendExcel(): 向工作表中加入数据记录
CloseExcel(): 结束处理

main()中示例的是建立test.xls文件, 其中两个工作表. 我这里源程序用VC6.0编译, 得到的结果在Excel 2003中可以使用.

#include <windows.h>
#include <sqlext.h>
#include <stdio.h>

#ifdef _MSC_VER
#pragma comment(lib,"odbc32.lib")
#define SQLLEN SQLINTEGER
#endif

enum errtype { ERRORFREE, ERRACTION, XLSBUSY, TXTBUSY, TXTOPENERROR,
SQLHANDLEENVERROR, SQLSETENVERROR, SQLHANDLEDBCERROR,
SQLCONNECTERROR, SQLALLOCSTMTERROR, SQLCREATEERROR,
SQLSELECTERROR, SQLBINDERROR } ;

SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;

// ------------------------------------------------------------------------------------------------------------
static void dbError( LPSTR lp, SQLSMALLINT handleType, SQLHANDLE handle)
{
BYTE buf[250], sqlstate[15];
SQLGetDiagRec( handleType,handle, 1, sqlstate, NULL,buf, sizeof(buf),NULL);
fprintf(stderr, "%s: %s SQLSTATE=%s\n",lp, buf, sqlstate);
}

// ------------------------------------------------------------------------------------------------------------
static void dbCleanup()
{
if (hstmt != SQL_NULL_HANDLE) {
SQLFreeStmt(hstmt, SQL_UNBIND);
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
}
if (hdbc != SQL_NULL_HANDLE) {
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
}
if (henv != SQL_NULL_HANDLE) SQLFreeHandle(SQL_HANDLE_ENV,henv);
}

// ------------------------------------------------------------------------------------------------------------
static void dbErrorCleanup( LPSTR lp,SQLSMALLINT handleType, SQLHENV henv,SQLHDBC hdbc,SQLHSTMT hstmt)
{
SQLHANDLE handle;
switch (handleType) {
case SQL_HANDLE_STMT:
handle = hstmt;
break;
case SQL_HANDLE_DBC:
handle = hdbc;
break;
default:
handle = henv;
}
if (handle != SQL_NULL_HANDLE) dbError( lp, handleType, handle );
dbCleanup(henv, hdbc, hstmt );
}

//---------------------------------------------------------
static BOOL isFileOpen(const BYTE *fileName)
{
HANDLE hFile;
// 以非共享方式打开文件. 检查EXCEL文件当前是否在使用中...........
hFile = CreateFile(fileName,GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);
if (hFile == INVALID_HANDLE_VALUE) {
if (GetLastError() == ERROR_SHARING_VIOLATION) return TRUE; // 使用中
else return FALSE; // 未使用中,或者无此文件(现在可以创建)
} else {
CloseHandle(hFile);
return FALSE;
}
}

int OpenExcel(BYTE *szExcelName, BYTE *szSheetName, BYTE *szFieldName[], BYTE *szFieldType[], int nColCount)
{
SQLRETURN retcode;
BYTE szSql[512], *pszSql=szSql;
BYTE szdatabase[256];
int rc, i;
henv = hdbc = hstmt = SQL_NULL_HANDLE;
if ( isFileOpen(szExcelName) ) return XLSBUSY;
// 准备环境 -------------------
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (retcode != SQL_SUCCESS) {
dbErrorCleanup( "SQLAllocHandle(ENV)",SQL_HANDLE_ENV,henv,hdbc,hstmt);
return SQLHANDLEENVERROR;
}
retcode = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3,0);
if (retcode != SQL_SUCCESS) {
dbErrorCleanup( "SQLSetEnvAttr()",SQL_HANDLE_ENV,henv,hdbc,hstmt);
return SQLSETENVERROR;
}
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode != SQL_SUCCESS) {
dbErrorCleanup( "SQLAllocHandle(DBC)",SQL_HANDLE_ENV,henv,hdbc,hstmt);
return SQLHANDLEDBCERROR;
}
// 与数据库建立连接 ------------------
sprintf(szdatabase,"DRIVER=Microsoft Excel Driver (*.xls);CREATE_DB=%s;DBQ=%s;READONLY=FALSE;EXCLUSIVE=Yes;",
szExcelName, szExcelName);
//fprintf(stderr, "DATABASE: %s\n", szdatabase);
retcode = SQLDriverConnect(hdbc, NULL, (SQLCHAR *)szdatabase, (short) (strlen(szdatabase)+1), NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
if (retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO) {
dbErrorCleanup( "SQLDriverConnect()",SQL_HANDLE_DBC,henv,hdbc,hstmt);
return SQLCONNECTERROR;
}
retcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc, &hstmt);
if (retcode != SQL_SUCCESS) {
dbErrorCleanup( "SQLAllocHandle(STMT)",SQL_HANDLE_DBC,henv,hdbc,hstmt);
return SQLALLOCSTMTERROR;
}
// 构造执行 CREATE TABLE 语句 ----------------------
pszSql = szSql + sprintf(szSql, "CREATE TABLE %s (", szSheetName);
for (i=0; i<nColCount; ++i) {
if (i) *pszSql++ = ',';
pszSql += sprintf(pszSql, "%s %s", szFieldName[i], szFieldType[i]);
}
*pszSql++ = ')';
*pszSql = '\0';
//fprintf(stderr, "STATEMENT: [%s]\n", szSql);
retcode = SQLExecDirect(hstmt, szSql, SQL_NTS);
if (retcode != SQL_SUCCESS) {
SQLCHAR sqlState[15];
SQLGetDiagField( SQL_HANDLE_STMT, hstmt,1,SQL_DIAG_SQLSTATE,sqlState,sizeof(sqlState),NULL);
if ( lstrcmpiA(sqlState,"42S01") != 0 ) { // Already existing...
dbErrorCleanup( " SQLExecDirect()",SQL_HANDLE_STMT,henv,hdbc,hstmt);
return SQLCREATEERROR;
}
}
return 0;
}

int AppendExcel(BYTE *szSheetName, BYTE *szFieldName[], int nColCount, BYTE *szData)
{
int i, rc;
BYTE szSql[512], *s, *p, *d, *psz;
//构造 INSERT INTO 语句 --------------------------------
psz = szSql + sprintf(szSql, "INSERT INTO %s (", szSheetName);
for (i=0; i<nColCount; ++i) {
if (i) *psz++ = ',';
psz += sprintf(psz, "%s", szFieldName[i]);
}
psz += sprintf(psz, ") VALUES (%s)", szData);
//fprintf(stderr, "STATEMENT: %s\n", szSql);
rc = (int) SQLExecDirect(hstmt, szSql, SQL_NTS);
if (rc != SQL_SUCCESS) {
dbError( " SQLExecDirect()",SQL_HANDLE_STMT,hstmt);
}
return rc;
}

void CloseExcel()
{
//fprintf(stderr, "CleanUp: henv=%08X; hdbc=%08X, hstmt=%08X.\n", henv, hdbc, hstmt);
dbCleanup();
}

//------------------ Test data ---------------------------------------
static BYTE szExcelName[] = "Test.xls"; // Excel 文件名
static BYTE szSheetNameA[] = "名单"; // 工作表名
static BYTE *szFieldNameA[] = { "姓名", "年龄" }; // 字段名
static BYTE *szFieldTypeA[] = { "TEXT", "NUMBER" }; // 字段类型
static BYTE szSheetNameB[] = "日程"; // 工作表名
static BYTE *szFieldNameB[] = { "日期", "时间", "安排" }; // 字段名
static BYTE *szFieldTypeB[] = { "TEXT", "TEXT", "TEXT" }; // 字段类型

int main()
{
if (OpenExcel(szExcelName, szSheetNameA, szFieldNameA, szFieldTypeA, 2)==0)
{
AppendExcel(szSheetNameA, szFieldNameA, 2, "'张三',33");
AppendExcel(szSheetNameA, szFieldNameA, 2, "'李四',44");
printf("Excel文件[%s]中的工作表[%s] 操作成功.\n", szExcelName, szSheetNameA);
CloseExcel();
}
if (OpenExcel(szExcelName, szSheetNameB, szFieldNameB, szFieldTypeB, 3)==0)
{
AppendExcel(szSheetNameB, szFieldNameB, 3, "'五月三日','18:00','饭局'");
printf("Excel文件[%s]中的工作表[%s] 操作成功.\n", szExcelName, szSheetNameB);
CloseExcel();
}
printf(" ----- 完了.");
return 0;
}

---------------------------------------
有关函数的调用参数:
int OpenExcel( //成功:返回0
BYTE *szExcelName, //Excel文件名
BYTE *szSheetName, //工作表名
BYTE *szFieldName[], //字段名(数组)
BYTE *szFieldType[], //字段类型(数组)
int nColCount) //字段数

int AppendExcel( //成功:返回0
BYTE *szSheetName, //工作表名
BYTE *szFieldName[], //字段名(数组)
int nColCount, //字段数
BYTE *szData) //数据字串

如使用图形界面,可把#include <stdio.h> 去掉, printf/fprintf 改为用 MessageBox 提供必要的输出信息或干脆删掉。

‘叁’ 如何实现将数据库里面表导成excel表

不知您用的是啥数据库?
Access:
选中表>鼠标右键菜单>导出>Excel
SQL Server:
EXEC master..xp_cmdshell 'bcp "SELECT * FROM <库名.dbo.表名>" queryout C:/输出文件.xls -c -q -S"(local)" -U"<用户名如sa>" -P"<口令>"'

例子:EXEC master..xp_cmdshell 'bcp "SELECT * FROM <库名.dbo.表名>" queryout C:/sysdb.xls -c -q -S"(local)" -U"sa" -P""'

‘肆’ C#实现 SQL数据库导出到EXCEL

很明显的,'bcp
Northwind.dbo.myTabe
out
"c:
est.xls"
/c
-/S"192.168.1.239:1433"
/U"sa"-p"yxaf123"',这个错误有多处,最好在命令提示符里调试一下再改成C#的格式。
bcp
Northwind.dbo.?????
out
c:
est.xls
/c
/S
[服务器名]
/U
??
/P
??????
此句在我机器上命令提示符里能通过,能生成test.xls

‘伍’ 如何把数据库中数据导成excel文件

Access和Excel都是微软的产品,其最大特点就是有较好的兼容性。所以使用微软的office套件。打开access数据库表,通过简单的拷贝就可以直接复制到excel表格中。

这里不知道你的用途是什么,如果是程序设计需要,需要通过相应的API来实现。各种程序设计语言提供了不同方式与方法。最简单的是微软公司自己的在.net开发环境下提供有dll的动态连接库接口

不知道你是不是在做.net编程,下面的答案也许对你有用,我以前做过,应该对大数据有效
一些系统可能需求把数据导出到Access或者Excel文件格式,以方便的传递数据、打印等。
Excel 文件或者 Access这两种需要导出的文件可能并不是事先就存在的,这就需要我们自己编程生成他们,下面整理一下生成这两个文件的一些方法,只罗列最常用的。并不全。

一、首先生成Excel文件。

方案一、如果用Excel保存的只是二维数据,也就是把他当数据库的来用。
最简单,你不用引用任何额外组件,只需要用 OLEDB 就可以完成创建Excel文件。 范例代码如下。

using System.Data.OleDb;public static void CreateExcelFile2() ...

using System.Data.OleDb;public static void CreateExcelFile2() ...
在你执行创建表的同时,系统如果发现Excel文件不存在,就自动完成了Excel文件的创建。这点如果没接触过的人,可能会不知道的。

至于对其中的增加、修改操作, 跟普通数据库没啥两样,就不描述了。
可以参考以下文章:

方案二、直接生成一个使用间隔符号隔开每一项数据的纯文本文件,但是文件的后缀是 XLS 。

注意:这时候,如果你直接用Excel打开这样的文件,没问题,一切正常,但是如果你用ADO.net 读取这个文件的时候,你的链接引擎不应该是Excel,而是文本文件(Microsoft Text Driver)。也就是链接字符串不应该是
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\aa2.xls;Extended Properties=Excel 8.0;"
而应该是下面的方式:

OLEDB的方式连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\11.txt;Extended Properties='text;HDR=No;FMT=TabDelimited'
ODBC的方式读TXT字符串写法:
Driver=;Dbq=C:\\11.txt;Extensions=asc,csv,tab,txt;

请参考以下文章:

方案三、你要创建的Excel文件,有一些Excel自己的特色需要创建,这就需要使用 Com 了,即:Microsoft Excel Object Library了

请添加 Microsoft Excel 11.0 Object Library 对它的引用,根据你装的Office的版本,这个组件库的版本也不一样。

范例代码:

public static void CreateExcelFile() ...

我这里只是简单的创建了Excel文件,没有更多的操作Excel,如果希望看到更多的操作方法,请参考以下几篇文章:

;en-us;306023&Proct=vcSnet#6

二、生成Access 数据库
Access 毕竟是一个数据库,所以Excel上述第一种方法,无法适用。
创建Access 数据库文件可以使用 ADOX,
ADOX与OleDB的区别:ADOX是 data api 只是一个接口, OLEDB 是数据提供者,API 去调用 数据提供者。

范例代码:
使用前,请添加引用 Microsoft ADO Ext. 2.x for DDL and Security 根据你的操作系统,可能这里的版本也不一样。

using ADOX;using System.IO; public static void CreateAccessFile(string FileName) ... }
上述代码只是生成了Access数据库,适用ADOX你也可以操作数据库,增加表等等操作,具体请参考以下文章:

引自

‘陆’ 怎样从数据库里把自己需要的数据导出到excel表格中

SERVER、ACCESS、EXCEL数据转换,详细说明如下:

一、SQL SERVER 和ACCESS的数据导入导出
常规的数据导入导出:
使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤:
○1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation
○2Services(数据转换服务),然后选择 czdImport Data(导入数据)。
○3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。
○4在Choose a Destination(选择目标)对话框中,选择Microsoft OLEDB Prov ider for SQLServer,选择数据库服务器,然后单击必要的验证方式。
○5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。
○6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。下一步,完成。

Transact-SQL语句进行导入导出:
1.在SQL SERVER里查询access数据:

SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名

2.将access导入SQL server
在SQL SERVER 里运行:
SELECT *
INTO newtable
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名

3.将SQL SERVER表里的数据插入到Access表中
在SQL SERVER 里运行:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名
(列名1,列名2)
select 列名1,列名2 from sql表

实例:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\db.mdb';'admin';'', Test)
select id,name from Test

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
SELECT *
FROM sqltablename

二、SQL SERVER 和EXCEL的数据导入导出

1、在SQL SERVER里查询Excel数据:

SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

2、将Excel的数据导入SQL server :
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

实例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

3、将SQL SERVER中查询到的数据导成一个Excel文件
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式

实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'

EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'

在VB6中应用ADO导出EXCEL文件代码:
Dim cn As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"

4、在SQL SERVER里往Excel插入数据:

insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:
INSERT INTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
(bestand, prokt) VALUES (20, 'Test')

‘柒’ vc导出access数据库数据到excel怎样实现

先读取access数据库,写入Excel通过引用Office控件或者说类库来完成,你可以在Office帮助文件中查到有关内容(帮助文件范例一般是VB
的,但是用法差不多),前提是你的office是完整安装的。

‘捌’ C#中如何将数据库数据直接导出到Excel

// <summary>
/// 导出Excel格式
/// </summary>
/// <param name="gridView"></param>
/// <param name="filename"></param>
private static void ExportGridViewToExcel(DevExpress.XtraGrid.Views.Grid.GridView gridView, string filename)
{
SaveFileDialog sfd = new SaveFileDialog();
filename += DateTime.Now.ToString("yyyyMMdd") + "-" + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString();

sfd.FileName = filename;
sfd.Filter = "Excel files (*xls) | *.xls";
sfd.RestoreDirectory = true;

if (sfd.ShowDialog() == DialogResult.OK && sfd.FileName.Trim() != null)
{
int rowIndex = 2;
int colIndex = 0;
int colNum = gridView.Columns.Count;

System.Reflection.Missing miss = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.Application xlapp = new
Microsoft.Office.Interop.Excel.Application(true);
xlapp.Visible = true;

Microsoft.Office.Interop.Excel.Workbooks mBooks =
(Microsoft.Office.Interop.Excel.Workbooks)xlapp.Workbooks;

Microsoft.Office.Interop.Excel.Workbook mBook =
(Microsoft.Office.Interop.Excel.Workbook)mBooks.Add(miss);

Microsoft.Office.Interop.Excel.Worksheet mSheet =
(Microsoft.Office.Interop.Excel.Worksheet)mBook.ActiveSheet;

Microsoft.Office.Interop.Excel.Range mRange = mSheet.get_Range((object)"A1", System.Reflection.Missing.Value);

//设置对齐方式
mSheet.Cells.HorizontalAlignment = XlHAlign.xlHAlignCenter;
//设置文字自动换行
//mSheet.Cells.WrapText = true;
//设置标题行高度
((Microsoft.Office.Interop.Excel.Range)mSheet.Rows["1:1", System.Type.Missing]).RowHeight = 20;
//设置数据行高度
((Microsoft.Office.Interop.Excel.Range)mSheet.Rows["2:" + gridView.RowCount + 1, System.Type.Missing]).RowHeight = 16;
//设置字体大小(10号字体)
mSheet.Range[mSheet.Cells[1, 1], mSheet.Cells[gridView.RowCount + 1, gridView.Columns.Count]].Font.Size = 10;
//设置单元格边框
Microsoft.Office.Interop.Excel.Range range1 =gridView.RowCount>17?mSheet.Range[mSheet.Cells[1, 2], mSheet.Cells[gridView.RowCount + 1, gridView.Columns.Count]]:mSheet.Range[mSheet.Cells[1, 2], mSheet.Cells[19, gridView.Columns.Count]];
range1.Borders.LineStyle = 1;
//设置标题颜色
mSheet.Range[mSheet.Cells[2, 1], mSheet.Cells[1, gridView.Columns.Count]].Font.Color =Color.Blue;
//将-¥000格式化成¥-000
string InOutInvSum = Convert.ToDecimal(gridView.GetRowCellValue(irow, gridView.Columns[icol])).ToString("C").Replace("¥", "").Replace("全角¥", "");
mSheet.Cells[rowIndex, colIndex] = "¥" + InOutInvSum;

Microsoft.Office.Interop.Excel.Range rH = mSheet.get_Range("C1","L1");
rH.Merge(0);
//报表的标题vlookup
mSheet.Cells[1,3] = "";

//写标题
for (int row = 2; row <= gridView.Columns.Count; row++ )
{
mSheet.Cells[2, row] = gridView.Columns[row - 1].GetTextCaption();

}
try
{
for (int irow = 0; irow < gridView.Columns.Count; irow++)
{
rowIndex++;
colIndex = 1;
for (int icol = 1; icol < gridView.Columns.Count; icol++)
{
colIndex++;
mSheet.Cells[rowIndex, colIndex] = gridView.GetRowCellValue(irow, gridView.Columns[icol]);

}//end 列
}//end 行
mBook.SaveAs(sfd.FileName,
Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel7, miss, miss, miss, miss,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
miss, miss, miss, miss, miss);
//retuen true;

}//end TRY
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
mBook.Close(false, miss, miss);
mBooks.Close();
xlapp.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(mRange);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(mSheet);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(mBook);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(mBooks);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlapp);
GC.Collect();
}

}
}

‘玖’ 如何将数据库中的数据导出到excel

以下都只是介绍操作的原理,具体要求要在应用中具体分析改变。
1. 此方法常用在form或者Console Application中,使用时须用要添加Reference,具体做法:
右键点击项目添加“Add Reference”,在Tom组件下,选择“Microsoft Excel 14.0 Object Library”,然后在项目中使用
下面注释//it looks like excele table start with 1 not 1
应该为//it looks like excele table start with 1 not 0

[csharp] view plain
private static void exportToExcel(DataTable dt)
{
Excel.Application excel=new Excel.Application();
excel.Application.Workbooks.Add(true);
excel.Visible = true;

//get the columns
for (int i = 0; i < dt.Columns.Count;i++ )
{
//here is started with 1
//it looks like excele table start with 1 not 1
excel.Cells[1, i + 1] = dt.Columns[i].ColumnName.ToString();
}

//get the data in rows
for (int row = 0; row < dt.Rows.Count;row++ )
{
for (int col = 0; col < dt.Columns.Count; col++)
{
excel.Cells[row+2, col+1] = dt.Rows[row][dt.Columns[col]].ToString();
}
}
//FolderBrowserDialog path = new FolderBrowserDialog();//打开文件对话框
//path.ShowDialog();
//textBox1.Text = path.SelectedPath;//选择文件夹

//save excel
//excel.SaveWorkspace();

excel.Quit();
}

2. 在web应用中,可通过HttpContext.Response.write()来实现
[csharp] view plain
protected static void toExcel(DataTable da){
System.Web.HttpContext context = System.Web.HttpContext.Current;
context.Response.Clear();

foreach( DataColumn colum in da.Columns){
context.Response.Write(colum.ColumnName+"\t");
}

context.Response.Write(System.Environment.NewLine);

foreach (DataRow row in da.Rows) {
for (int i = 0; i < da.Rows.Count; i++)
{
context.Response.Write(row[i].ToString()+"\t");
}
context.Response.Write(System.Environment.NewLine);
}
context.Response.ContentType = "application/vnd.ms-excel";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=plan.xls");
context.Response.End();
}

‘拾’ C#把查询出来的数据导出到Excel代码怎么写

C#把查询出来的数据导出到Excel代码的代码如下:
1、创建form
public Form1()
{
InitializeComponent();
}

2、点击button开始查询db并导入excel数据
private void button1_Click(object sender, EventArgs e)
{
SqlConnection cnn ; //sql连接对象
string connectionString = null; 数据库连接串
string sql = null; 执行sql定义
string data = null; 初始化结果
int i = 0;
int j = 0;
//以下是声明并创建excel文件
Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
object misValue = System.Reflection.Missing.Value;

xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
//开始连接数据库
connectionString = "data source=servername;initial catalog=databasename;user id=username;password=password;";
cnn = new SqlConnection(connectionString);
cnn.Open(); //打开数据库
sql = "SELECT * FROM Proct"; //定义查询sql语句
SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn); //执行查询
DataSet ds = new DataSet();
dscmd.Fill(ds);

for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
{
for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++)
{
data = ds.Tables[0].Rows[i].ItemArray[j].ToString();
xlWorkSheet.Cells[i + 1, j + 1] = data;
}
}
//数据导入到excel文件
xlWorkBook.SaveAs("csharp.net-informations.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MessageBox.Show("Excel file created , you can find the file c:\\csharp.net-informations.xls");
}