wyl458619358 2016-05-26 01:41 采纳率: 0%
浏览 1030

C# 我用SQL在几张table里面抓了一些数据放到EXCLE模板里,通过判断栏位的值加底色

我用SQL在几张table里面抓了一些数据放到EXCLE里,现在表里面有CBRS_REQUIRED这个列,通过判断CBRS_REQUIRED这个列里面的值是否是‘yes’,如果是‘yes‘的话则给yes的这一行底色改成红色。我现在只能给excel所有的行都加上红色底色,希望大家帮我加上这个判断。谢谢,下面是代码,底色我写在最后。

using System;
using System.Text;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.HSSF.Util;
using NPOI.SS.UserModel;
using System.Data;
using System.Data.OleDb;
using Microsoft.Win32;

namespace NPOIExcel
{
class NPOIExcelwork
{
static HSSFWorkbook hssfworkbook;
static OleDbConnection oleCon;
static ICellStyle cellStyle;

    public void excelwork()
    {

        //正式环境
        string Maskfile = @"D:\SRC_CODE\Release_List.xls";
        string time = DateTime.Now.ToString("yyyyMMdd");
        string ReportFile = @"D:\EBAUTOSEND\Release_List" + time + ".xls";
        #region//取得模板
        if (File.Exists(Maskfile) == true)
        {
            FileStream file = new FileStream(Maskfile, FileMode.Open, FileAccess.Read);
            hssfworkbook = new HSSFWorkbook(file);
            file.Close();

            cellStyle = hssfworkbook.CreateCellStyle();




        }
        else
        {
            return;
        }
        #endregion


        #region//建立Sheet,可以多个
        ISheet sheet = hssfworkbook.GetSheetAt(0);//建立Sheet
        sheet.ForceFormulaRecalculation = true;//保持Sheet公式
        #endregion

        #region//填值部分
        DataTable DT = DB();
        if (DT.Rows.Count > 0)
        {
            for (int i = 0; i < DT.Rows.Count; i++)
            {
                sheet.CreateRow(i + 1);
                for (int j = 0; j < DT.Columns.Count; j++)
                {
                    judge(DT.Rows[i][j], i + 1, j, sheet);
                }
            }
            DT.Dispose();
        }
        else
        {
            return;
        }
        #endregion

        #region//文件输出
        try
        {
            FileStream FileTo = new FileStream(ReportFile, FileMode.Create);
            hssfworkbook.Write(FileTo);
            FileTo.Close();
        }
        catch
        {
            return;
        }
        #endregion

    }
    #region//取得数据库资料
    ##
= @"sql语句";
        try
        {
            OleDbDataAdapter Oda = new OleDbDataAdapter(SQL, oleCon);
            DataTable tab = new DataTable("TB");
            Oda.Fill(tab);
            Oda.Dispose();
            oleCon.Dispose();
            return tab;
        }
        catch
        {
            return new DataTable();
        }
    }
    #endregion

    #region//放入值,行数,列数,Sheet对象
    static void judge(object DT, int i, int j, ISheet sheet1)
    {
        switch (DT.GetType().ToString())
        {
            //case "System.Decimal":
            //    Double value = 0;
            //    Double.TryParse(DT.ToString(), out value);
            //    sheet1.GetRow(i).CreateCell(j).SetCellValue(value);
            //    break;
            //case "System.DateTime":
            //    DateTime TM;
            //    DateTime.TryParse(DT.ToString(), out TM);
            //    sheet1.GetRow(i).CreateCell(j).SetCellValue(TM);
            //    break;
            //case "System.Double":
            //    sheet1.GetRow(i).CreateCell(j).SetCellValue(Double.Parse(DT.ToString()));
            //    break;
            default:

                ICell cell = sheet1.GetRow(i).CreateCell(j);                    
                cell.SetCellValue(DT.ToString());
                cellStyle = cell.CellStyle as HSSFCellStyle;
                cellStyle.FillForegroundColor = HSSFColor.Red.Index;
                cellStyle.FillPattern = FillPattern.SolidForeground;



                cell.CellStyle = cellStyle;
                break;
        }
    }



    #endregion

}

}

  • 写回答

1条回答 默认 最新

  • 普通网友 2016-10-04 18:39
    关注

    #define delay_nm() _delay_cycles(10000);//延迟1s
    uchar table[]={"hell0"};//输入你想要显示的字符
    uchar data;
    //void _delay_1us(void);
    //void _delay_nus(uint n);
    //void _delay_ms(void);
    //void _delay_nms(uint n);
    //uint busy_1602(void);
    void write_com(uchar com);
    void write_data(uchar dat);
    void LCD_set_xy( uchar x, uint y );
    void LCD_write_string(uchar X,uchar Y,uchar s);
    void init();//初始化函数
    //void LCD_display();
    /*LCD数据///P2.3e P2.4 RW P2.5RS
    //p1.4---p1.7接数据位
    void main()
    {
    WDTCTL=WDTPW+WDTHOLD;//关看门狗
    DCOCTL=0;
    BCSCTL1=CALBC1_1MHZ;
    DCOCTL=CALDCO_1MHZ;
    BCSCTL2|=SELM_1;//MCLK选择DCOCLK
    BCSCTL2|=0X00;//SMCLK选择DCOLCK
    P1SEL&=0x00;
    P2SEL&=0x00;
    P1DIR|=0xff;//选择P1为输出端
    P2DIR|=0xff;//P2为输出端
    init();
    delay_nm();
    LCD_write_string(0,0,table);
    delay_nm();
    while(1);
    }
    void _delay_1us(void)
    {
    asm("nop");
    }
    void _delay_nus(uint n)
    {
    int i;
    for(i=0;i<n;i++)
    _delay_1us();
    }

    评论

报告相同问题?

悬赏问题

  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了