导出Excel中指定单元格的图片

想导出excel中的图片,并用某个单元格的数据命名,结果发现找不到图片的单元格,这可怎么办,发现图片是存储在单独的Shapes中的,所以只能根据图片的Top和行的Top比较判断图片在哪一行了,这里用到一个Excel的引用

using Microsoft.Office.Interop.Excel;

然后就是提取和保存代码了

string fn = @"Book1.xls";
ApplicationClass excel = new ApplicationClass();
Workbook workbook = excel.Workbooks.Add(fn);
excel.UserControl = true;
excel.Visible = false;
Worksheet sheet = workbook.Worksheets.get_Item(1) as Worksheet;
int row = 0;
Range range;
for (int i = 1; i <= sheet.Shapes.Count; i++)
{
    Shape s = sheet.Shapes.Item(i) as Shape;
    float img_top = s.Top;
    do
    {
        row++;
        range = sheet.Cells[row, 1] as Range;
    } while (img_top - 5 > (double)(range.Top));
    string f = "img_" + range.Text + ".jpg";
    Clipboard.Clear();
    s.CopyPicture(Appearance.Button, XlCopyPictureFormat.xlBitmap);
    IDataObject iData = Clipboard.GetDataObject();
    if (iData != null && iData.GetDataPresent(DataFormats.Bitmap))
    {
        System.Drawing.Image img = Clipboard.GetImage();
        if (img != null)
        {
            img.Save(@"" + f, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
}
workbook.Close(false, null, null);
excel.Quit();

参考文献:
http://blog.163.com/jiajia8166@126/blog/static/1813520201282753358819/?latestBlog
http://blog.sina.com.cn/s/blog_4c6e822d0102e2f0.html
http://www.cnblogs.com/MR_ke/archive/2010/03/08/1680576.html

温度的相关集合(CPU、SHT2X)

系统温度的工具,会除以1000,往往得到0,新的系统里似乎已经找不到这个包了

apt-get install lm-sensons

树莓派的方法,适用于M2+、M3,不适用M1、M1+,2018-3-27补充适用于M2U

cat /sys/class/thermal/thermal_zone0/temp

关于A20,宅猫给的办法,需要除1000

cat /sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input

目前还没有找到获取M2系统温度的代码

- 阅读剩余部分 -

Armbian for M2+

首先是下载镜像,官方下载网址,下载的Jessie server,很袖珍只有200+M,解压后Armbian_5.13_Bananapim2plus_Debian_jessie_3.4.112.raw有1.3+G
http://www.armbian.com/banana-pi-m2-plus/

烧录后可以直接SSH登录,账号root,密码1234,会立即要求更新密码,新建帐户,用了传统的pi/bananapi
66.png

第一次用,测试了一下MikuDuino的兼容性,OK
67.png

MikuDuino来了(基于MikuPi的Arduino库)

仅仅是一个开始,也仅仅能点灯,算作一种轻量级库的尝试吧
https://github.com/bpiq/MikuPi
期间参考了很多前辈的资料,首先是Gordon's WiringPi,然后是sinovoip's BPI-WiringPi和tjCFeng's ClassA20等
要写一个轻量级的库看似简单,但对于一个没有linux和c基础的MikuQ来说,困难重重

1、要判断板卡的型号,目前也只能通过数内核的办法粗分BPI-M2+和BPI-M3
2、学习如何写动态库和如何安装,参考wiringPi
3、学习写makefile编译和安装,勉强通过还不会写build脚本
4、简单的gpio控制,参考cubieboard
5、gpio映射,结果发现GPIO L不受控,后来参考BPI-WiringPi
6、学用github,暂时还不太会写markdown
7、定义Arduino的结构和IO
8、其它各种c的问题,找不到头文件,重复定义,编译错误,and so on

最终算是出来了一个雏形,可以点灯了,结果还被大球抢了先
http://forum.banana-pi.org.cn/thread-1324-1-1.html

安装起来很简单

git clone https://github.com/bpiq/MikuPi.git
cd MikuPi
sudo make

然后就可以运行例子了

cd examples
gcc -Wall -o blink blink.c -lMikuDuino
sudo ./blink

看大球说和Arduino还有区别,继续修改了blink-qubot.c,是不是更像了,这里用到的13是wiringPi定义的13,对应物理21脚,也可以写成D21,这个是MikuDuino的定义,更方便对应。

2013蓝桥杯预选---第39级台阶

    小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
    站在台阶前,他突然又想着一个问题:
    如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?
    请你利用计算机的优势,帮助小明寻找答案。

要求提交的是一个整数。
注意:不要提交解答过程,或其它的辅助说明文字。

首先是Water用py给了一个思路,翻译成C#,9.8s

import time
t = 0
def f(i, j, k, s):
    global t
    if j > 0:   
        j -= i
        k += 1
        s += str(i) + ','
        if j == 0:
            f(0, j, k, s)
        else:
            f(1, j, k, s)
            f(2, j, k, s)
    elif j == 0:
        if k % 2 == 1:
            return
        t += 1
        #print('t=%d k=%s %s' % (t, k, s))
        return
    else:
        return
        
if __name__ == '__main__':
    start = time.time()
    n = 39
    f(1, n, 0, '')
    f(2, n, 0, '')
    c = time.time() - start
    print('t=%d used time %0.3f' % (t,c))

- 阅读剩余部分 -