1. 程式人生 > >VC控制EXCEL的基本操作之設定篇

VC控制EXCEL的基本操作之設定篇

設定篇

1 設定單元格的值

1)

選中指定單元格,使用SetValue設定值

CellName.Format(_T("A%d"),i);//單元格的名稱

range.AttachDispatch(sheet.GetRange(COleVariant(CellName),COleVariant(CellName)));//載入單元格range.SetValue(COleVariant(subFileName));

CellName.Format(_T("C%d"),i);//單元格的名稱

range.AttachDispatch(sheet.GetRange(COleVariant(CellName),COleVariant(CellName)));//載入單元格

range.SetValue(COleVariant((long)i));

2)

選中所有的單元格, 使用SetItem 設定指定單元格的值

range.AttachDispatch(sheet.GetCells(),TRUE);//載入所有單元格

//設定第I行 第1、2、3列的值

range.SetItem(COleVariant((long)(i)),COleVariant((long)1),COleVariant(subFileName)); //第一列

range.SetItem(COleVariant((long)(i)),COleVariant((long)2),COleVariant(unicodeStr));  //第二列

range.SetItem(COleVariant((long)(i)),COleVariant((long)3),COleVariant((long)i));      //第三列

2 設定行高列寬

選中某列 設定列寬

//獲得所有列

range.AttachDispatch(sheet.GetColumns(),true);

//設定第一列的列寬  Range cols

cols.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal,TRUE);

cols.SetColumnWidth(COleVariant((long)10)); //設定列寬

//設定第4列的列寬

cols.AttachDispatch(range.GetItem(COleVariant((long)4),vtMissing).pdispVal,TRUE);

cols.SetColumnWidth(COleVariant((long)10)); //設定列寬

//設定列寬為自動適應

cols.AutoFit();

設定行高

    Range rows;

       range.AttachDispatch(sheet.GetRows(),TRUE);

       //選擇第一行

       rows.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal);

//設定行高

       rows.SetRowHeight(COleVariant((long)60));

注意: 行高列寬使用的單位不一樣 

3 設定單元格型別

       range.AttachDispatch(sheet.GetCells(),TRUE);//載入所有單元格

       range.SetNumberFormat(COleVariant(L"@")); //將單元格設定為文字型別

4 設定單元格字型

       Font ft;

       //設定第一列的字型

       range.AttachDispatch(sheet.GetColumns(),true);

       range.AttachDispatch(range.GetItem(COleVariant((long)1),vtMissing).pdispVal,TRUE);

       //字型作用範圍

       ft.AttachDispatch(range.GetFont());

       ft.SetName(COleVariant(_T("宋體")));

       ft.SetSize(COleVariant((long)48));

ft.SetBold(COleVariant((long)1));//粗體

ft.SetColorIndex(COleVariant((long)2));//設定字型顏色

5 設定單元格背景色

range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("D1"))));

       //////////////設定底色/////////////////

       Interior it;

       it.AttachDispatch(range.GetInterior());

       it.SetColorIndex(COleVariant((long)11));//標題底色

       ////表格內容的底色////

       range.AttachDispatch(sheet.GetRange(COleVariant(_T("A2")),COleVariant(_T("D5"))));

       it.AttachDispatch(range.GetInterior());

       it.SetColorIndex(COleVariant((long)15));

6 設定表格邊框

1)

range.AttachDispatch(sheet.GetRange(COleVariant(_T("A2")),COleVariant(_T("D5"))));

//LineStyle=線型Weight=線寬ColorIndex=線的顏色(-4105為自動)

range.BorderAround(COleVariant((long)1),(long)2,((long)-4105),vtMissing);//設定邊框

2)

range.AttachDispatch(sheet.GetRange(COleVariant(_T("A2")),COleVariant(_T("D5"))));

                     _variant_t v1;  //線型

                     _variant_t v2;  //寬度

                     _variant_t v3;  //顏色

                     v1.vt=VT_I2;

                     v1.lVal=2; // 線的樣式:- no line; 1-solid; 2-big dot;3-small dot;4-dash dot; 5-dash dot dot; 

                     v2.vt=v1.vt;

                     v2.lVal=3; // 線的粗細程度

                     v3.vt=v1.vt;

                     v3.lVal=1; // 1-black;2-white;3-red;4-green;5-blue; 6-yellow; 7-pink;8-dark blue; 

                     UnitRge.BorderAround(v1,v2,v3,vtMissing);//設定邊框

7 合併單元格

1)

       //合併單元格

       //載入要合併的單元格

       range.AttachDispatch(sheet.GetRange(COleVariant(_T("A1")),COleVariant(_T("D1"))),TRUE);

       range.Merge(COleVariant((long)0));

2)

        //將第一個單元格合併成行,列

        range.AttachDispatch(sheet.GetCells());

        unionRange.AttachDispatch(range.GetItem (COleVariant((long)1),COleVariant((long)1)).pdispVal ); //第一個單元格

        unionRange.AttachDispatch(unionRange.GetResize(COleVariant((long)3),COleVariant((long)2)));     //GetResize(3,2) 從第一個單元格開始合併行列的所有單元格

        unionRange.Merge(COleVariant((long)0));   //合併單元格

8 設定單元格文字為自動換行 及排列方式

       range.AttachDispatch(sheet.GetUsedRange());//載入已使用的單元格

       range.SetWrapText(COleVariant((long)1));//設定單元格內的文字為自動換行

       //設定齊方式為水平垂直居中

       //水平對齊:預設=1,居中=-4108,左=-4131,右=-4152

       //垂直對齊:預設=2,居中=-4108,左=-4160,右=-4107

       range.SetHorizontalAlignment(COleVariant((long)-4108));

       range.SetVerticalAlignment(COleVariant((long)-4108));

9 在單元格中插入公式

//選擇A2單元格,插入一個公式"=RAND()*100000",並設定A2數字格式為貨幣形式

range=sheet.GetRange(COleVariant(L"A2"),COleVariant(L"A2"));

range.SetFormula(COleVariant(L"=RAND()*100000"));

range.SetNumberFormat(COleVariant(L"$0.00"));

10 在單元格中插入圖片

       Shapes   shapes   =   sheet.GetShapes();// 從Sheet物件上獲得一個Shapes   

       range.AttachDispatch(sheet.GetRange(COleVariant(L"E5"),COleVariant(L"E5"))); // 獲得Range物件,用來插入圖片

       shapes.AddPicture( L"d:\\pic.bmp "   ,   false   ,   true   ,   (float)range.GetLeft().dblVal

              ,(float)range.GetTop().dblVal,(float)range.GetWidth().dblVal,(float)range.GetHeight().dblVal);

   ShapeRange   sRange   =   shapes.GetRange(_variant_t(long(1)));

   sRange.SetHeight(float(30));  //在RANGE範圍內 設定圖片寬高
   sRange.SetWidth(float(30)); 

11 對選取的區域進行排序

       #define xlAscending (long) 1

       #define xlDescending (long) 2

       #define vOpt COleVariant((long) DISP_E_PARAMNOTFOUND, VT_ERROR)

       #define xlHeader (long) 1                            // 選取的區域有標題

       #define xlNoHeader (long) 2                          // 選取的區域無標題    一定要正確確定是否有標題,否則排序可能不成功

       #define xlMatchCase COleVariant((long) 1)

       #define xlIgnoreCase COleVariant((long) 0)

       #define xlTopToBottom (long) 1                       // 垂直方向進行排序

       #define xlLeftToRight (long) 2                       // 水平方向進行排序

       #define xlPinYin (long) 1 // this is the default     // 按字元的中文拼音進行排序

       #define xlStroke (long) 2                            // 按每個字元中的筆畫數進行排序

       VARIANT key1; // these lines set up first arg (key1) to sort

       V_VT(&key1) = VT_DISPATCH;                           // 排序時,關鍵字的vt設定為VT_DISPATCH

       V_DISPATCH(&key1) = sheet.GetRange(COleVariant(L"A1"),COleVariant(L"A1"));   // 設定按哪個關鍵字進行排序 選擇單元意為:按此列(或行)為主關鍵字進行排序

       range=sheet.GetRange(COleVariant(L"A1"),COleVariant(CellName));              // 選擇對哪些區域內的單元格進行排序

       range.Sort(key1, xlAscending, vOpt, vOpt, xlAscending, vOpt,xlAscending,xlNoHeader,vOpt,xlIgnoreCase,xlTopToBottom,xlPinYin); //設定排序 無標題時一定要設定為xlNoHeader  否則不起作用


參考資料:

相關推薦

VC控制EXCEL基本操作設定

設定篇 1 設定單元格的值 1) 選中指定單元格,使用SetValue設定值 CellName.Format(_T("A%d"),i);//單元格的名稱 range.AttachDispat

python檔案的基本操作控制檔案指標

    f.tell #每次統計都是從檔案頭到當前指標所在位置####只要在t 模式在是read(n)n代表字元個數,除此之外的檔案指標都是以bytes為單位    # f=open('c.txt',mode='rt',encoding='utf-')    # print(f.read(3))    # f

目錄基本操作mkdir命令

用戶 信息 version 上下文 mkdirmkdir命令主要用來創建目錄。語法 mkdir (選項) (參數)選項-Z 設置安全上下文,僅開啟SElinux時有效 -m <目標屬性>或--mode<目標屬性>建立目錄的同時設置目錄的權限 -p或--pa

SQL Server 基本操作三種增加法

一次 增刪改查 sql 數據的操作 插入 table 增長 類型 val 前言:     數據庫操作避免不了對數據的操作,操作方法大同小異,萬變不離其宗,今就寫一下各種花式操作的根本增刪改查四種操作,今天我們就來說一下增加操作的三種方法 正文:   增加操作是對數據庫進

elasticsearch基本操作--使用QueryBuilders進行查詢

constant false cor ble conn 中一 listen terms int /** * 系統環境: vm12 下的centos 7.2 * 當前安裝版本: elasticsearch-2.4.0.tar.gz */ QueryBuilder 是es

Python-借助xlsxwriter對Excel基本操作

ring log tle src ima 文件 條形圖 def title 1導入第三方包,需單獨下載,安裝pip工具的情況下,可使用CMD下命令:pip install xlsxwriter 1 import xlsxwriter 2創建excel文件,新增一個工作簿

web自動化2-selenium基本操作元素定位

main .com blog text lin div spa wid 操作 id driver.find_elenment_by_id("kw") name driver.find_element_by_name("kw") class name diver.find

mysql基本操作增刪改查

mysql查詢查詢所有列select * from 表名;例:select * from classes;查詢指定列可以使用as為列或表指定別名select 列1,列2,... from 表名;例:select id,name from classes;增加說明:主鍵列是自動增長,但是在全列插入時需要占位,通

紅黑樹-RBT(二、基本操作左旋)

都是 spa 左旋 class body 節點 圖片 如果 info 一、左旋   1、當在含有n個關鍵字的紅黑樹上運行時,TREE-INSERT和TREE-DELETE操作對樹作了修改,結果可能違反(一、紅黑樹--》2、定義)中給出的紅黑樹的性質,為了保持這些性質,就要改

linux基本操作yum程序包管理器

yum在Centos系統中,程序包管理器的核心是rpm: 其後端所使用rpm命令行工具; 前段使用yum命令行工具或dnf命令行工具;程序包管理的前段工具: RHEL/Centos系列發行版linux中,yum和dnf; yum命令行工具: Yellow

linux基本操作rpm程序包管理器

rpm在linux中的應用程序結構形式分為三種: 1)源代碼形式 2)二進制形式 3)程序包形式其中源代碼是最權威的,二進制形式經過了一系列的編譯、匯編、連接等等其他操作得到可以執行的程序及其他相關的文件,而程序包形式則是二進制形式進一步進行操作,使之可以自動安裝程序包中的所有文件,當然在卸

mongodb的基本操作數據刪除

table rop test 數據 error: 不同的 mon error tables 刪除操作使用remove進行,數據的刪除與查詢類似,接受一個參數,與查詢不同的是,為了防止誤操作,刪除操作不允許不傳參數 比如 db.test_collection

Python基本操作文件操作

enc 開頭 基本操作 常用 odin 文件 see tel 文件名 一、   1.文件操作的函數     open("文件名字(路徑)",mode="模式",encoding="字符集")   2.模式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+

Flask中數據庫框架和模型類四:再述SQLAlchemy配置和基本操作增刪改查

模糊 offset odi com app ack 字符 add () from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) #設置連接數據庫的URL

File類的基本操作InputStream位元組輸入流

話不多少。我直接把程式碼貼上來了。有什麼問題請給我留言 package org.mark.streamRW; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; /

RDDs基本操作Transformations

逐元素Transformation map() map()接收函式,把函式應用到RDD的每個元素,返回新的RDD 舉例: val lines = sc.parallelize(Array("hello", "spark", "hello", "world") val lines2 = lines.map

RDD基本操作Action

介紹 比較 text inf count program 圖片 訪問 器) Action介紹 在RDD上計算出來一個結果 把結果返回給driver program或保存在文件系統,count(),save 常用的Action reduce() 接收一個函數,作用在RDD

redis基本操作hmset/hmget

import redis.clients.jedis.Jedis; import java.util.HashMap; import java.util.List; import java.util.Map; public class RedisUtil { private static J

二、MongoDB的基本操作索引

(一)建立索引 1、查詢集合中所有索引 db.imooc_collection.getIndexes() 2、建立索引 db.imooc_collection.ensureIndex({x:1}), (1)ensureIndex建立索引,引數是json文件 (2)key的值不再代

Python處理excel基本操作

   近期因為工作需要,用Python處理excel表格資料,其中常用的命令如下: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author : Peidong # @Site : # @File :