九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
c#如何獲取excel單元格的RGB顏色

這段時(shí)間一直在做office的工作。前2天獲取單元格的顏色的問(wèn)題一直沒(méi)搞明白。

開(kāi)始我想用的就是Npoi.主要前一部分的工作都是用Npoi完成的

row.GetCell(j).CellStyle.FillBackgroundColorColor 獲取IColor接口。通過(guò)IColor的RGB屬性獲取可是經(jīng)過(guò)大量用例測(cè)試這里獲取的rgb并不準(zhǔn)確只有部分顏色對(duì)的上。

如圖

后來(lái)我甚至問(wèn)了npoi的創(chuàng)始人也沒(méi)有給我一個(gè)明確的回復(fù)。

我自己猜測(cè)因?yàn)閞ow.GetCell(j).CellStyle.FillBackgroundColor 是short類(lèi)型npoi是不是只支持他枚舉的顏色

后來(lái)經(jīng)過(guò)翻閱官網(wǎng)的demo發(fā)現(xiàn)npoi可以通過(guò)rgb設(shè)置顏色

  1. /* ==================================================================== 
  2.    Licensed to the Apache Software Foundation (ASF) under one or more 
  3.    contributor license agreements.  See the NOTICE file distributed with 
  4.    this work for additional information regarding copyright ownership. 
  5.    The ASF licenses this file to You under the Apache License, Version 2.0 
  6.    (the "License"); you may not use this file except in compliance with 
  7.    the License.  You may obtain a copy of the License at 
  8.  
  9.        http://www.apache.org/licenses/LICENSE-2.0 
  10.  
  11.    Unless required by applicable law or agreed to in writing, software 
  12.    distributed under the License is distributed on an "AS IS" BASIS, 
  13.    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
  14.    See the License for the specific language governing permissions and 
  15.    limitations under the License. 
  16. ==================================================================== */  
  17.   
  18. /* ================================================================ 
  19.  * Author: Tony Qu  
  20.  * Author's email: tonyqus (at) gmail.com  
  21.  * NPOI HomePage: http://www.codeplex.com/npoi 
  22.  * Contributors: 
  23.  *  
  24.  * ==============================================================*/  
  25.   
  26. using System;  
  27. using System.Collections.Generic;  
  28. using System.Text;  
  29.   
  30. using System.IO;  
  31. using NPOI.HSSF.UserModel;  
  32. using NPOI.HPSF;  
  33. using NPOI.POIFS.FileSystem;  
  34. using NPOI.SS.UserModel;  
  35. using NPOI.HSSF.Util;  
  36.   
  37. namespace CustomColorInXls  
  38. {  
  39.     class Program  
  40.     {  
  41.         static void Main(string[] args)  
  42.         {  
  43.             InitializeWorkbook();  
  44.   
  45.   
  46.             HSSFPalette palette = workbook.GetCustomPalette();  
  47.             palette.SetColorAtIndex(HSSFColor.PINK.index, (byte)255, (byte)1, (byte)222);  
  48.            //HSSFColor  palette.GetColor()  
  49.             //HSSFColor myColor = palette.AddColor((byte)253, (byte)0, (byte)0);  
  50.   
  51.             ISheet sheet1 = workbook.CreateSheet("Sheet1");  
  52.             ICellStyle style1 = workbook.CreateCellStyle();  
  53.             style1.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.PINK.index;  
  54.             style1.FillPattern = FillPatternType.SOLID_FOREGROUND;  
  55.             sheet1.CreateRow(0).CreateCell(0).CellStyle = style1;  
  56.             short c = sheet1.GetRow(0).Cells[0].CellStyle.FillForegroundColor;  
  57.             short []sh = palette.GetColor(c).GetTriplet();  
  58.   
  59.             WriteToFile();  
  60.         }  
  61.   
  62.         static HSSFWorkbook workbook;  
  63.   
  64.         static void WriteToFile()  
  65.         {  
  66.             //Write the stream data of workbook to the root directory  
  67.             FileStream file = new FileStream(@"test.xls", FileMode.Create);  
  68.             workbook.Write(file);  
  69.             file.Close();  
  70.         }  
  71.   
  72.         static void InitializeWorkbook()  
  73.         {  
  74.             workbook = new HSSFWorkbook();  
  75.   
  76.             ////create a entry of DocumentSummaryInformation  
  77.             DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();  
  78.             dsi.Company = "NPOI Team";  
  79.             workbook.DocumentSummaryInformation = dsi;  
  80.   
  81.             ////create a entry of SummaryInformation  
  82.             SummaryInformation si = PropertySetFactory.CreateSummaryInformation();  
  83.             si.Subject = "NPOI SDK Example";  
  84.             workbook.SummaryInformation = si;  
  85.         }  
  86.     }  
  87. }  

而且palettle可以通過(guò)public HSSFColor GetColor(short index);方法將short轉(zhuǎn)化為HSSFColor而通過(guò)HSSFColor類(lèi)的public virtual short[] GetTriplet();方法可以獲取rgb.

但是這里存在2個(gè)問(wèn)題

1.

palette.SetColorAtIndex(HSSFColor.PINK.index, (byte)255, (byte)1, (byte)222);這里是設(shè)置的時(shí)候固定的設(shè)置。而人工操作能否有這種固定的設(shè)置。

2.

支持excel2007的XSSFWorkbook并沒(méi)有GetCustomPalette方法。而通過(guò)反編譯器我也沒(méi)找到能獲取Palette的類(lèi)似的類(lèi)

后通過(guò)官網(wǎng)excel2003和excel2007的demo如下code

2003


2007



npoi to excel2007無(wú)法獲取單元格rgb的顏色 如果顏色不一樣會(huì)向npoi支持的short轉(zhuǎn)化

實(shí)在沒(méi)法了。只有祭出com組件了。

代碼如下:

  1. Microsoft.Office.Interop.Excel.Application application = new Microsoft.Office.Interop.Excel.Application();  
  2. Microsoft.Office.Interop.Excel.Workbook workbook = null;  
  3. Microsoft.Office.Interop.Excel.Worksheet worksheet = null;  
  4. //打開(kāi)文件,n.FullPath是文件路徑    
  5. workbook = application.Application.Workbooks.Open(copyPath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);  
  6. Microsoft.Office.Interop.Excel.Range range = null;// 創(chuàng)建一個(gè)空的單元格對(duì)象  
  7. range = worksheet.get_Range(worksheet.Cells[rowNum + 1, ColumnNum + 1], worksheet.Cells[rowNum + 1, ColumnNum + 1]);  
  8. if (range.Value2 != null)  
  9. {  
  10.     string content = range.Value2.ToString();  
  11. }  
  12. string color = range.Interior.Color.ToString();  
  13.  Common com = new Common();  
  14. Color col = com.RGB(int.Parse(color));  
  15. return new byte[3] { col.R, col.G, col.B };  

RGB方法如下:

  1. public Color RGB(int color)  
  2.        {  
  3.            int r = 0xFF & color;  
  4.            int g = 0xFF00 & color;  
  5.            g >>= 8;  
  6.            int b = 0xFF0000 & color;  
  7.            b >>= 16;  
  8.            return Color.FromArgb(r, g, b);  
  9.        }  

string color的這個(gè)color的范圍是整個(gè)顏色的范圍OK問(wèn)題解決??墒莿?dòng)用了com組件,如果大家有更好的辦法歡迎留言。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
WPF之導(dǎo)入導(dǎo)出Excel
VB操作Word與Excel
細(xì)品RibbonX(52):如何共享Ribbon定制之在正在使用的多個(gè)Office版本中部署Excel解決方案
c#獲取txt,word,excel文檔內(nèi)容方法
excel C# 報(bào)表制作匯總
vba excel編程三日談(1)
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服