使用NPOI读取word表格里面的图片
一、引用NuGetGet里的npoi,如下图:
二、打开文件
Stream stream = File.OpenRead(@"C:\Test\\11.docx"); XWPFDocument doc = new XWPFDocument(stream);
三、获取word里面所有的表格
var allTables = doc.Tables;
四、获得表格的所有行
var rows = table.Rows;
五、获得行下的所有列
var cells = row.GetTableCells();
六、获得列里的图片
var run = cell.Paragraphs[0].Runs[0]; List<XWPFPicture> xwpfPictureList = run.GetEmbeddedPictures();
七、得到图片的二进制数据
var data = xwpfPictureList[0].GetPictureData(); var picData = data.Data;
八、把二进制转换为image并保存到本地
var image = GetImageFromByte(picData); image.Save(@"C:\Test\pics\\0603-" + i + ".png");
下面是完整的代码:
Stream stream = File.OpenRead(@"C:\Test\\11.docx"); XWPFDocument doc = new XWPFDocument(stream); var allTables = doc.Tables; int i = 1; foreach (var table in allTables) { var rows = table.Rows; foreach (var row in rows) { var cells = row.GetTableCells(); foreach (var cell in cells) { if (cell.Paragraphs[0].Runs.Count > 0) { var run = cell.Paragraphs[0].Runs[0]; List<XWPFPicture> xwpfPictureList = run.GetEmbeddedPictures(); if (xwpfPictureList.Count > 0) { var data = xwpfPictureList[0].GetPictureData(); var picData = data.Data; var image = GetImageFromByte(picData); image.Save(@"C:\Test\pics\\0603-" + i + ".png"); i++; } } } } }
public System.Drawing.Image GetImageFromByte(byte[] streamByte) { System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte); System.Drawing.Image img = System.Drawing.Image.FromStream(ms); return img; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?