導航:首頁 > 文件類型 > 純c讀寫excel文件

純c讀寫excel文件

發布時間:2023-03-10 08:43:53

1. 怎樣用C#讀取Excel文件

//創建一個數據鏈接
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = c:\\sample.xls;Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM [Sheet1$] " ;
myConn.Open ( ) ;
file://打開數據鏈接,得到一個數據集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://創建一個 DataSet對象
myDataSet = new DataSet ( ) ;
file://得到自己的DataSet對象
myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
file://關閉此數據鏈接
myConn.Close ( ) ;

怎麼樣讀取Excel表格中的數據其實和讀取資料庫中的數據沒有什麼實質上的區別。

注釋:這里讀取的是C盤根目錄下的"Sample.xls"文件。

(2).用DataGrid來顯示得到的數據集:

在得到DataSet對象後,只需要通過下列二行代碼,就可以把數據集用DataGrid顯示出來了:

DataGrid1.DataMember= "[Sheet1$]" ;
DataGrid1.DataSource = myDataSet ;

(3).用Visual C#讀取Excel表格,並用DataGrid顯示出來的程序代碼(Read.cs)和程序運行的界面:

掌握了上面二點,水到渠成就可以得到以下代碼:

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Data.OleDb ;
public class Form1 : Form
{
private Button button1 ;
private System.Data.DataSet myDataSet ;
private DataGrid DataGrid1 ;
private System.ComponentModel.Container components = null ;

public Form1 ( )
{
file://初始化窗體中的各個組件
InitializeComponent ( ) ;
file://打開數據鏈接,得到數據集
GetConnect ( ) ;
}
file://清除程序中使用過的資源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}

private void GetConnect ( )
{
file://創建一個數據鏈接
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = c:\\sample.xls;Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM [Sheet1$] " ;
myConn.Open ( ) ;
file://打開數據鏈接,得到一個數據集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://創建一個 DataSet對象
myDataSet = new DataSet ( ) ;
file://得到自己的DataSet對象
myCommand.Fill ( myDataSet , "[Sheet1$]" ) ;
file://關閉此數據鏈接
myConn.Close ( ) ;
}
private void InitializeComponent ( )
{
DataGrid1 = new DataGrid ( ) ;
button1 = new Button ( ) ;
SuspendLayout ( ) ;
DataGrid1.Name = "DataGrid1";
DataGrid1.Size = new System.Drawing.Size ( 400 , 200 ) ;

button1.Location = new System.Drawing.Point ( 124 , 240 ) ;
button1.Name = "button1" ;
button1.TabIndex = 1 ;
button1.Text = "讀取數據" ;
button1.Size = new System.Drawing.Size (84 , 24 ) ;
button1.Click += new System.EventHandler ( this.button1_Click ) ;

this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
this.ClientSize = new System.Drawing.Size ( 400 , 280 ) ;
this.Controls.Add ( button1 ) ;
this.Controls.Add ( DataGrid1 ) ;
this.Name = "Form1" ;
this.Text = "讀取Excle表格中的數據,並用DataGrid顯示出來!" ;
this.ResumeLayout ( false ) ;

}
private void button1_Click ( object sender , System.EventArgs e )
{
DataGrid1.DataMember= "[Sheet1$]" ;
DataGrid1.DataSource = myDataSet ;

}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}

下圖是程序編譯後,運行結果:
http://www.yesky.com/20020313/jt-2002-3-13-image001.jpg

圖01:用Visual C#讀取"c:\sample.xls"的運行界面
(4).總結:

以上只是讀取了Excel表格中"Sheet1"中的數據,對於其他"Sheet"中的內容,可以參照讀取"Sheet1"中的程序,只作一點修改就可以了,譬如要讀取"Sheet2"中的內容,只需要把"Read.cs"程序中的"Sheet1$"改成"Sheet2$"就可以了。

三.Visual C#調用Excel表格,並在Excel表格中存儲數據:

在Visual C#中調用Excel表格,並不像讀取Excel表格中的數據那麼容易了,因為在Visual C#中調用Excel表格要使用到Excel的COM組件。如果你安裝Office套件在"C"盤,那麼在"C:\Program Files\Microsoft Office\Office"可以找到這個COM組件"EXCEL9.OLB",在《Visual C#如何使用Active X組件》一文中,這些COM組件都是非受管代碼的,要在Visual C#中使用這些非受管代碼的COM組件,就必須把他們轉換成受管代碼的類庫。所以在用Visual C#調用Excel表格之前,必須完成從COM組件的非受管代碼到受管代碼的類庫的轉換。

(1).非受管代碼COM組件轉換成受管代碼的類庫:

首先把COM組件"EXCEL9.OLB"拷貝到C盤的根目錄下,然後輸入下列命令:

tlbimp excel9.olb

這樣在C盤的根目錄下面就產生了三個DLL文件:"Excel.dll"、"Office.dll"、"VBIDE.dll"。在產生了上面的三個文件後,這種轉換就成功完成了。在下面的程序中,就可以利用這轉換好的三個類庫編寫和Excel表格相關的各種操作了。

(2).Visual C#打開Excel表格:

在"Excel.dll"中定義了一個命名空間"Excel",在差命名空間中封裝了一個類"Application",這個類和啟動Excel表格有非常重要的關系,在Visual C#中,只需要下列三行代碼就可以完成打開Excel表格的工作,具體如下:

Excel.Application excel = new Excel.Application ( ) ;
excel.Application.Workbooks.Add ( true ) ;

excel.Visible = true ;

但此時的Excel表格是一個空的表格,沒有任何內容,下面就來介紹如何往Excel表格中輸入數據。

(3).往Excel表格中輸入數據:

在命名空間"Excel"中,還定義了一個類"Cell",這個類所代表的就是Excel表格中的一個下單元。通過給差"Cell"賦值,從而實現往Excel表格中輸入相應的數據,下列代碼功能是打開Excel表格,並且往表格輸入一些數據。

Excel.Application excel = new Excel.Application ( ) ;
excel.Application.Workbooks.Add ( true ) ;
excel.Cells[ 1 , 1 ] = "第一行第一列" ;
excel.Cells[ 1 , 2 ] = "第一行第二列" ;
excel.Cells[ 2 , 1 ] = "第二行第一列" ;
excel.Cells[ 2 , 2 ] = "第二行第二列" ;
excel.Cells[ 3 , 1 ] = "第三行第一列" ;
excel.Cells[ 3 , 2 ] = "第三行第二列" ;
excel.Visible = true ;

(4). Visual C#調用Excel表格,並在Excel表格中存儲數據的程序代碼(Excel.cs):

了解了上面的這些知識,得到完成上述功能的程序代碼就顯得比較容易了,具體如下:

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Data.SqlClient ;
public class Form1 : Form
{
private Button button1 ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
file://初始化窗體中的各個組件
InitializeComponent ( ) ;
}
file://清除程序中使用的各個資源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose( disposing ) ;
}
private void InitializeComponent ( )
{
button1 = new Button ( ) ;
SuspendLayout ( ) ;
button1.Location = new System.Drawing.Point ( 32 , 72 ) ;
button1.Name = "button1" ;
button1.Size = new System.Drawing.Size ( 100 , 30 ) ;
button1.TabIndex = 0 ;
button1.Text = "調用Excel文件!" ;
button1.Click += new System.EventHandler ( button1_Click ) ;

AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;

this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ;
this.Controls.Add ( button1 ) ;
this.Name = "Form1" ;
this.Text = "如何用Visual C#調用Excel表格!" ;
this.ResumeLayout ( false ) ;

}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
Excel.Application excel = new Excel.Application ( ) ;
excel.Application.Workbooks.Add ( true ) ;
excel.Cells[ 1 , 1 ] = "第一行第一列" ;
excel.Cells[ 1 , 2 ] = "第一行第二列" ;
excel.Cells[ 2 , 1 ] = "第二行第一列" ;
excel.Cells[ 2 , 2 ] = "第二行第二列" ;
excel.Cells[ 3 , 1 ] = "第三行第一列" ;
excel.Cells[ 3 , 2 ] = "第三行第二列" ;
excel.Visible = true ;
}
}

2. c/c++怎樣從excel中讀取內容

使用Visual
C++的擴展指令#import:
#import
"C:\\Program
Files\\Common
Files\\microsoft
shared\\OFFICE14\\MSO.DLL"
\
rename("RGB","MsoRGB")
\
rename("SearchPath","MsoSearchPath")
#import
"C:\\Program
Files\\Common
Files\\Microsoft
Shared\\VBA\\VBA6\\VBE6EXT.OLB"
#import
"C:\\Program
Files\\Microsoft
Office\\Office14\\EXCEL.EXE"
\
rename(
"DialogBox",
"ExcelDialogBox"
)
\
rename(
"RGB",
"ExcelRGB"
)
\
rename(
"CopyFile",
"ExcelCopyFile"
)
\
rename(
"ReplaceText",
"ExcelReplaceText"
)
\
exclude(
"IFont",
"IPicture"
)
no_al_interfaces
#import指令會從指定的可執行文件,動態鏈接庫等COM組件中導出類型庫(type
lib),在Debug和Release臨時目錄中生成對應的類型庫頭文件(type
lib
header
file),以供C++程序使用。
如以上三條指令在編譯後會生成excel.tlh,
mso.lh和vbetext.olb三個頭文件,可以在Debug和Release目錄中找到。

3. [c++]推薦一個可以讀寫EXCEL的方法!

想要通過ODBC直接讀、寫Excel表格文件,首先,應確保ODBC中已安裝有Excel表格文件的驅動"MICROSOFT EXCEL DRIVER (*.XLS)"。然後,可根據下面步驟進行:
1. 在StdAfx.h文件中加入:
include <afxdb.h>
include <odbcinst.h>

2. 通過ODBC直接創建Excel文件(暫定文件名:Demo.xls)
//創建並寫入Excel文件
void CRWExcel::WriteToExcel()
{
CDatabase database;
CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安裝驅動
CString sExcelFile = "c:\\demo.xls"; // 要建立的Excel文件
CString sSql;

TRY
{
// 創建進行存取的字元串
sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);

// 創建資料庫 (既Excel表格文件)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
// 創建表結構(姓名、年齡)
sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)";
database.ExecuteSQL(sSql);

// 插入數值
sSql = "INSERT INTO demo (Name,Age) VALUES ('徐景周',26)";
database.ExecuteSQL(sSql);

sSql = "INSERT INTO demo (Name,Age) VALUES ('徐志慧',22)";
database.ExecuteSQL(sSql);

sSql = "INSERT INTO demo (Name,Age) VALUES ('郭徽',27)";
database.ExecuteSQL(sSql);
}

// 關閉資料庫
database.Close();
}
CATCH_ALL(e)
{
TRACE1("Excel驅動沒有安裝: %s",sDriver);
}
END_CATCH_ALL;
}

3. 通過ODBC直接讀取Excel文件(暫定文件名:Demo.xls)
// 讀取Excel文件
void CRWExcel::ReadFromExcel()
{
CDatabase database;
CString sSql;
CString sItem1, sItem2;
CString sDriver;
CString sDsn;
CString sFile = "Demo.xls"; // 將被讀取的Excel文件名

// 檢索是否安裝有Excel驅動 "Microsoft Excel Driver (*.xls)"
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 沒有發現Excel驅動
AfxMessageBox("沒有安裝Excel驅動!");
return;
}

// 創建進行存取的字元串
sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", sDriver, sFile);

TRY
{
// 打開資料庫(既Excel文件)
database.Open(NULL, false, false, sDsn);

CRecordset recset(&database);

// 設置讀取的查詢語句.
sSql = "SELECT Name, Age "
"FROM demo "
"ORDER BY Name ";

// 執行查詢語句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);

// 獲取查詢結果
while (!recset.IsEOF())
{
//讀取Excel內部數值
recset.GetFieldValue("Name ", sItem1);
recset.GetFieldValue("Age", sItem2);

// 移到下一行
recset.MoveNext();
}

// 關閉資料庫
database.Close();

}
CATCH(CDBException, e)
{
// 資料庫操作產生異常時...
AfxMessageBox("資料庫錯誤: " + e->m_strError);
}
END_CATCH;
}

// 獲取ODBC中Excel驅動
CString CRWExcel::GetExcelDriver()
{
char szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut;
char *pszBuf = szBuf;
CString sDriver;

// 獲取已安裝驅動的名稱(涵數在odbcinst.h里)
if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
return "";

// 檢索已安裝的驅動是否有Excel...
do
{
if (strstr(pszBuf, "Excel") != 0)
{
//發現 !
sDriver = CString(pszBuf);
break;
}
pszBuf = strchr(pszBuf, '\0') + 1;
}
while (pszBuf[1] != '\0');

return sDriver;
}

4. 怎麼用C/C++語言讀取excel文件的某一行某一列

曾用C++ Builder 寫過EXCEL操作。
一般有兩種方法:
1,用ADO連續EXCEL資料庫,這種方式,操作可用SQL來操作。
2,用OLE方式,這種方式可以達到EXCEL中大部分的功能和操作。

以下供參考:

/************* 1--- ADO *************/
//.h
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include <DBGrids.hpp>
#include <Dialogs.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *btnOpen;
TButton *btnExit;
TOpenDialog *OpenDialog1;
TButton *btnEx;
TDataSource *DataSource1;
TADOConnection *ADOConnection1;
TADOQuery *ADOQuery1;
TDBGrid *DBGrid1;
void __fastcall btnExClick(TObject *Sender);
void __fastcall btnOpenClick(TObject *Sender);
void __fastcall btnExitClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

//.cpp
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
DBGrid1->DataSource = DataSource1;
DataSource1->DataSet = ADOQuery1;
ADOQuery1->Connection = ADOConnection1;
ADOConnection1->LoginPrompt = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btnExClick(TObject *Sender)
{
if(ADOQuery1->Active && ADOQuery1->RecordCount>0 )
{
int col;
AnsiString s;
FILE *fp;
fp = fopen("c:\\out.txt","w+t");
if(fp==NULL)
{
Application->MessageBox("導出文件建立失敗","提示");
return ;
}
col = ADOQuery1->Fields->Count;
ADOQuery1->First();
while(!ADOQuery1->Eof)
{
s = "";
for(int i=0;i<col;i++)
s += ADOQuery1->Fields->Fields[i]->AsString +"\t";

fprintf(fp,"%s\n",s.c_str());
ADOQuery1->Next();
}
fclose(fp);
}
else
{
Application->MessageBox("沒有需要導出的記錄,請重新打開XLS文件","提示");
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btnOpenClick(TObject *Sender)
{
AnsiString sFile="";
AnsiString sCon;
if(OpenDialog1->Execute())
{
sFile = OpenDialog1->FileName;
/*
sCon = AnsiString("Driver={Microsoft Excel Driver (*.xls)};DBQ=")
+ sFile +"; ";
*/
sCon = AnsiString("Provider=MSDASQL.1;Persist Security Info=False;Extended Properties='DSN=Excel Files;DBQ=")
+ sFile +"'; ";

}

try
{
if(sFile!="")
{
ADOConnection1->Connected = False;
ADOConnection1->ConnectionString = sCon;
ADOConnection1->Connected = True;
}
}
catch(...)
{
Application->MessageBox("連接XLS失敗","提示");
return ;
}

if(ADOConnection1->Connected)
{
AnsiString sSQL = "Select * from [Sheet1$]";
ADOQuery1->SQL->Text = sSQL;
ADOQuery1->Active = True;
}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

/************* 2-- OLE *************/
C++ Builder把Excel自動化對象的功能包裝在下面的四個Ole Object Class函數中,應用人員可以很方便地進行調用。
設置對象屬性:void OlePropertySet(屬性名,參數……);
獲得對象屬性:Variant OlePropertyGet(屬性名,參數……);
調用對象方法:1) Variant OleFunction(函數名,參數……);
2) void OleProcere(過程名,參數……);

在程序中可以用宏定義來節省時間:

#define PG OlePropertyGet
#define PS OlePropertySet
#define FN OleFunction
#define PR OleProcere

舉例:
ExcelApp.OlePropertyGet("workbooks").OleFunction("Add");
可寫為
ExcelApp.PG("workbooks").FN("Add");

C++ Builder中使用OLE控制Excel2000,必須掌握Excel2000的自動化對象及Microsoft Word Visual Basic幫助文件中的關於Excel的對象、方法和屬性。對象是一個Excel元素,屬性是對象的一個特性或操作的一個方面,方法是對象可以進行的動作。
首先定義以下幾個變數:
Variant ExcelApp,Workbook1,Sheet1,Range1;

1、Excel中常用的對象是:Application,Workbooks,Worksheets等。

★創建應用對象★
Variant ExcelApp;
ExcelApp = Variant::CreateObject ("Excel.Application");
或者
ExcelApp = CreateOleObject ("Excel.Application");

★創建工作簿對象★
Variant WorkBook1;
WorkBook1 = ExcelApp.PG("ActiveWorkBook");

★創建工作表對象★
Variant Sheet1;
Sheet1 = WorkBook1.PG("ActiveSheet");

★創建區域對象★
Variant Range;
Range = Sheet1.PG("Range","A1:A10");
或者使用
Excel.Exec(PropertyGet("Range")<<"A1:C1").Exec(Procere("Select"));

2、常用的屬性操作:

★使Excel程序不可見★
ExcelApp.PS("Visible", (Variant)false);

★新建EXCEL文件★

◎ 新建系統模板的工作簿
ExcelApp.PG("workbooks").FN("Add") //默認工作簿
ExcelApp.PG("workbooks").FN("Add", 1) //單工作表
ExcelApp.PG("workbooks").FN("Add", 2) //圖表
ExcelApp.PG("workbooks").FN("Add", 3) //宏表
ExcelApp.PG("workbooks").FN("Add", 4) //國際通用宏表
ExcelApp.PG("workbooks").FN("Add", 5) //與默認的相同
ExcelApp.PG("workbooks").FN("Add", 6) //工作簿且只有一個表
或者使用ExcelApp的Exec方法
Excel.Exec(PropertyGet("Workbooks")).Exec(Procere("Add"));
◎ 新建自己創建的模板的工作簿
ExcelApp.PG("workbooks").FN("Add", "C:\\Temp\\result.xlt");

★打開工作簿★
ExcelApp.PG("workbooks").FN("open", "路徑名.xls")

★保存工作簿★
WorkBook1.FN("Save"); //保存工作簿
WorkBook1.FN("SaveAs", "文件名");//工作簿保存為,路徑注意用"\\"

★退出EXCEL★
ExcelApp.FN ("Quit");
ExcelApp = Unassigned;
或者
ExcelApp.Exec(Procere("Quit"));

★操作工作表★

◎ 選擇選擇工作表中第一個工作表
Workbook1.PG("Sheets", 1).PR("Select");
Sheet1 = Workbook1.PG("ActiveSheet");

◎ 重命名工作表
Sheet1.PS("Name", "Sheet的新名字");

◎ 當前工作簿中的工作表總數
int nSheetCount=Workbook1.PG("Sheets").PG("Count");

★操作行和列★

◎ 獲取當前工作表中有多少行和多少列:
Sheet1.PG("UsedRange").PG("Columns").PG("Count"); //列數
Sheet1.PG("UsedRange").PG("Rows").PG("Count"); //行數

◎ 設置列寬
ExcelApp.PG("Columns", 1).PS("ColumnWidth", 22);
或者
Range = ExcelApp.PG("Cells", 1, 3);
Range.PS("ColumnWidth", 22);

◎ 設置行高
ExcelApp.PG("Rows", 2).PS("RowHeight", 25);
或者
Range = ExcelApp.PG("Cells", 2, 1);
Range.PS("RowHeight", 25);

◎ 在工作表最前面插入一行
Sheet1.PG("Rows", 1).PR("Insert");

◎ 刪除一行
ExcelApp.PG("Rows", 2).PR("Delete"); //將第2行刪除

// 本文作者:ccrun ,如轉載請保證本文檔的完整性,並註明出處。
// 歡迎光臨 C++ Builder 研究 www.ccrun.com
// 摘自:http://www.ccrun.com/doc/go.asp?id=529

★操作單元格★

◎ 設置單元格字體
Sheet1.PG("Cells", 1, 1).PG("Font").PS("Name", "隸書"); //字體
Sheet1.PG("Cells", 2, 3).PG("Font").PS("size", 28); //大小

◎ 設置所選區域字體
Range.PG("Cells").PG("Font").PS("Size", 28);
// 本文轉自 C++Builder研究 - http://www.ccrun.com/article.asp?i=529&d=0iezy5
Range.PG("Cells").PG("Font").PS("Color", RGB(0, 0, 255));
其中參數的設置:
Font Name : "隸書" //字體名稱
Size : 12 //字體大小
Color : RGB(*,*,*) //顏色
Underline : true/false //下劃線
Italic: true/false //斜體

◎ 設置單元格格式為小數百分比
Sheet1.PG("Cells", 1, 1).PS("NumberFormatLocal", "0.00%");

◎ 設定單元格的垂直對齊方式
Range = ExcelApp.PG("Cells", 3, 4);
// 1=靠上 2=居中 3=靠下對齊 4=兩端對齊 5=分散對齊
Range.PS("VerticalAlignment", 2);

◎ 設定單元格的文本為自動換行
Range = ExcelApp.PG("Cells", 3, 4);
Range.PS("WrapText", true);

★單元格的合並★

◎ Range = Sheet1.PG("Range", "A1:A2"); //A1和A2單元格合並
String strRange = "A" + IntToStr(j) + ":" + "C" + IntToStr(j); //比如:A1:C5
Range1=Sheet1.PG("Range", strRange.c_str()); //可以用變數控制單元格合並
Range1.FN("Merge", false);

★讀寫單元格★

◎ 指定單元格賦值
String strValue = "abcdefg";
Sheet1.PG("Cells", 3, 6).PS("Value", strValue.c_str());
Sheet1.PG("Cells", j, 1).PS("Value", "總記錄:" + String(j-6));
或者使用
Excel.Exec(PropertyGet("Cells")<<1<<3).Exec(PropertySet("Value")<<15);

◎ 所選區域單元格賦值
Range.PG("Cells").PS("Value", 10);

◎ 所選區域行賦值
Range.PG("Rows",1).PS("Value", 1234);

◎ 工作表列賦值
Sheet1.PG("Columns",1).PS("Value", 1234);

◎ 讀取取值語句:
String strValue = Sheet1.PG("Cells", 3, 5).PG("Value");

5. c語言讀取xlsx文件

目前,C語言主要用於嵌入式軟體的開發,很少用C語言開發PC軟體。不知道帥哥版是不是要在PC上用C語言操作權Execl文件、操作原因。
既然要操作,請試一下下面的方法:
A, 用Excel打開要讀取的excel文件。
B, 點擊Excel菜單「文件」-> 「另存為」,選擇文件類型為「CSV(逗號分隔)」。這樣,原來的excel文件會被另存為csv格式的文件,該文件是文本文件,
可以用文本文件編輯工具打開的。原excel文件的每一行記錄,被轉換為一行文本了。一行記錄各列的值,用逗號隔開了。
C, 用C語言的文件IO函數介面,讀取上面文本文件即可。

6. vc++怎樣從excel文件中讀寫數據

首先利用Visual C++ 6.0,建立一個MFC基於對話框的工程項目,共享DLL,Win32平台。工程名稱ExcelTest。在主對話框中加入一個按鈕,
ID IDC_EXCELTEST
Caption Test Excel
雙擊該按鈕,增加成員函數void CExcelTestDlg::OnExceltest()。
在BOOL CExcelTestApp::InitInstance()中,dlg.DoModal();之前增加代碼:
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持庫失敗!");
exit(1);
}
在return FALSE; 語句前,加入:
CoUninitialize();
選擇Menu->View->ClassWizade,打開ClassWizade窗口,選擇Add Class->From a type library,選擇D:\Program Files\Microsoft Office\office\Excel9.OLB(D:\Program Files\Microsoft Office\是本機上Microsoft Office 2000的安裝目錄,可根據個人機器上的實際安裝目錄修改)。選擇_Application、Workbooks、_Workbook、 Worksheets、_Worksheet、Range,加入新類,分別為_Application、Workbooks、_Workbook、 Worksheets、_Worksheet、Range,頭文件Excel9.h,源文件Excel9.cpp。
在ExcelTestDlg.cpp文件的頭部,#include "ExcelTestDlg.h"語句之下,增加 :
#include "comdef.h"
#include "Excel9.h"
在void CExcelTestDlg::OnExceltest() 函數中增加如下代碼:
void CExcelTestDlg::OnExceltest()
{
_Application ExcelApp;
Workbooks wbsMyBooks;
_Workbook wbMyBook;
Worksheets wssMysheets;
_Worksheet wsMysheet;
Range rgMyRge;
//創建Excel 2000伺服器(啟動Excel)

if (!ExcelApp.CreateDispatch("Excel.Application",NULL))
{
AfxMessageBox("創建Excel服務失敗!");
exit(1);
}
//利用模板文件建立新文檔
wbsMyBooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);
wbMyBook.AttachDispatch(wbsMyBooks.Add(_variant_t("g:\\exceltest\\MyTemplate.xlt")));
//得到Worksheets
wssMysheets.AttachDispatch(wbMyBook.GetWorksheets(),true);
//得到sheet1
wsMysheet.AttachDispatch(wssMysheets.GetItem(_variant_t("sheet1")),true);
//得到全部Cells,此時,rgMyRge是cells的集合
rgMyRge.AttachDispatch(wsMysheet.GetCells(),true);
//設置1行1列的單元的值
rgMyRge.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!"));
//得到所有的列
rgMyRge.AttachDispatch(wsMysheet.GetColumns(),true);
//得到第一列
rgMyRge.AttachDispatch(rgMyRge.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//設置列寬
rgMyRge.SetColumnWidth(_variant_t((long)200));
//調用模板中預先存放的宏
ExcelApp.Run(_variant_t("CopyRow"),_variant_t((long)10),vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,
vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
//列印預覽
wbMyBook.SetSaved(true);
ExcelApp.SetVisible(true);
wbMyBook.PrintPreview(_variant_t(false));
//釋放對象
rgMyRge.ReleaseDispatch();
wsMysheet.ReleaseDispatch();
wssMysheets.ReleaseDispatch();
wbMyBook.ReleaseDispatch();
wbsMyBooks.ReleaseDispatch();
ExcelApp.ReleaseDispatch();
}

7. C語言讀取excel文件,像這種數據怎麼跳過逗號只讀取數據

如圖所示

抱歉,我不是特別了解C語言,所以用的是C++

可追問,望採納

8. 如何用c語言讀取excel文件

簡單的方法是通過ODBC來實現:
具體實現
一、 包含Excel文件內操作類頭文件 #include "CSpreadSheet.h"
二、 新建Excel文件,並寫入默認數據容 // 新建Excel文件名及路徑,TestSheet為內部表名 CSpreadSheet SS("c:\\Test.xls", "

閱讀全文

與純c讀寫excel文件相關的資料

熱點內容
qq空間禮物看不到了 瀏覽:590
怎麼用手機把圖片文件格式改小 瀏覽:976
網路輸出異常 瀏覽:312
手機里暴風隱藏文件路徑 瀏覽:49
win10備份系統文件好大 瀏覽:293
js導出html到excel 瀏覽:725
c游戲編程用什麼軟體 瀏覽:645
java依賴倒置 瀏覽:166
華為暢玩5x微信運動 瀏覽:819
applepay必須改美國時間 瀏覽:893
max文件默認打開方式 瀏覽:466
拆遷農民要看的有哪些文件 瀏覽:351
蘋果手機鈴聲的文件後綴 瀏覽:352
什麼東西代表了編程 瀏覽:698
網路中心如何關閉 瀏覽:258
k3編程是什麼意思 瀏覽:296
vba和sql資料庫哪個好 瀏覽:38
u啟王u盤啟動盤製作工具 瀏覽:228
深入理解android網路編程 瀏覽:615
javah無法訪問 瀏覽:11

友情鏈接