一、引用NuGetGet里的npoi,如下图:

 二、打开文件

  1. Stream stream = File.OpenRead(@"C:\Test\\11.docx");
  2. XWPFDocument doc = new XWPFDocument(stream);

三、获取word里面所有的表格

  1. var allTables = doc.Tables;

四、获得表格的所有行

  1. var rows = table.Rows;

五、获得行下的所有列

  1. var cells = row.GetTableCells();

六、获得列里的图片

  1. var run = cell.Paragraphs[0].Runs[0];
  2. List<XWPFPicture> xwpfPictureList = run.GetEmbeddedPictures();

七、得到图片的二进制数据

  1. var data = xwpfPictureList[0].GetPictureData();
  2. var picData = data.Data;

八、把二进制转换为image并保存到本地

  1. var image = GetImageFromByte(picData);
  2. image.Save(@"C:\Test\pics\\0603-" + i + ".png");

 

下面是完整的代码:

复制代码
  1. Stream stream = File.OpenRead(@"C:\Test\\11.docx");
  2. XWPFDocument doc = new XWPFDocument(stream);
  3. var allTables = doc.Tables;
  4. int i = 1;
  5. foreach (var table in allTables)
  6. {
  7. var rows = table.Rows;
  8. foreach (var row in rows)
  9. {
  10. var cells = row.GetTableCells();
  11. foreach (var cell in cells)
  12. {
  13. if (cell.Paragraphs[0].Runs.Count > 0)
  14. {
  15. var run = cell.Paragraphs[0].Runs[0];
  16. List<XWPFPicture> xwpfPictureList = run.GetEmbeddedPictures();
  17. if (xwpfPictureList.Count > 0)
  18. {
  19. var data = xwpfPictureList[0].GetPictureData();
  20. var picData = data.Data;
  21. var image = GetImageFromByte(picData);
  22. image.Save(@"C:\Test\pics\\0603-" + i + ".png");
  23. i++;
  24. }
  25. }
  26. }
  27. }
  28.  
  29. }
复制代码
复制代码
  1. public System.Drawing.Image GetImageFromByte(byte[] streamByte)
  2. {
  3. System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
  4. System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
  5. return img;
  6. }
复制代码

版权声明:本文为aademeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/aademeng/articles/13049938.html