當前位置:首頁 » 數據倉庫 » 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");
}