使用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;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM