效果预览:
设计思路:通过设置每个单元格的背景色,利用每个单元格做像素点作画
使用工具:C# with NPOI
一、界面
简单的界面,包括图片选择按钮、图片预览控件、Excel生成按钮,用户可以自行设置需要生成的行数和列数。
二、实现方法
读取图片至Bitmap → 生成缩略图 → 创建Workbook工作簿并填充单元格
代码如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
namespace HWPicture2Excel
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
Bitmap bmp = null;
/// <summary>
/// 更新数目
/// </summary>
object lock1 = new object();
/// <summary>
/// 更新线程数
/// </summary>
object lock2 = new object();
/// <summary>
/// 更新字典
/// </summary>
object lock3 = new object();
private void buttonOpenPicture_Click(object sender, EventArgs e)
{
if (isCreating)
{
MessageBox.Show("正在生成中,请稍等");
return;
}
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "|*.jpg||*.png||*.bmp";
if (ofd.ShowDialog() != DialogResult.OK)
{
return;
}
try
{
bmp = new Bitmap(ofd.FileName);
}
catch
{
MessageBox.Show("图片已损坏!");
return;
}
pictureBox.Image = bmp;
labelSize.Text = bmp.Width + "×" + bmp.Height;
}
private void b