Visual Studio 2010에서 C#을 사용하여 프로그램을 작성 중이며 NPOI 라이브러리를 사용하고 있습니다.NPOI를 사용하여 Excel 파일에 이미지 삽입
이미지를 Excel 파일에 삽입하려고합니다. 두 가지 방법을 시도했지만 둘 다 작동하지 않습니다.
//Method 1
HSSFPatriarch patriarch = newSheet.CreateDrawingPatriarch() as HSSFPatriarch;
HSSFClientAnchor anchor;
var memoryStream = new MemoryStream();
System.Drawing.Image image = System.Drawing.Image.FromFile("image.jpeg");
image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Gif);
anchor = new HSSFClientAnchor(0, 0, 255, 255, 0, 0, 0, 0);
anchor.AnchorType = 2; //types are 0, 2, and 3. 0 resizes within the cell, 2 doesn't
int index = newWorkbook.AddPicture(memoryStream.ToArray(), PictureType.JPEG);
HSSFPicture signaturePicture = patriarch.CreatePicture(anchor, index) as HSSFPicture; //ERROR
방법 1을 사용하면 컴파일 할 때 예외가 발생합니다. 오류 메시지는 Object reference not set to an instance of an object
이고 오류는 코드의 마지막 줄에서 발생합니다.
//Method 2
byte[] data = File.ReadAllBytes("image.jpeg");
int picInd = newWorkbook.AddPicture(data, XSSFWorkbook.PICTURE_TYPE_JPEG);
XSSFCreationHelper helper = newWorkbook.GetCreationHelper() as XSSFCreationHelper;
XSSFDrawing drawing = newSheet.CreateDrawingPatriarch() as XSSFDrawing;
XSSFClientAnchor anchor = helper.CreateClientAnchor() as XSSFClientAnchor;
anchor.Col1 = 0;
anchor.Row1 = 0;
XSSFPicture pict = drawing.CreatePicture(anchor, picInd) as XSSFPicture;
방법 2 문제없이 컴파일하고 실행하십시오. 그러나 생성 된 Excel 파일을 열려고하면 Excel found unreadable content in 'output.xlsx'. Do you want to recover the contents of this workbook?
이라는 메시지가 나타납니다. 통합 문서를 복구했지만 여전히 이미지가 표시되지 않았습니다.
이미지를 삽입 한 후의 다음 단계는 동일한 통합 문서의 Clone
입니다. 방법 2를 사용하면 복제 시트가 전혀 작성되지 않았으므로 이미지 문제가 해결되면 수정 될지 확실하지 않습니다.
누군가가 도와 드릴 수 있습니까? 방법 중 하나를 제대로 작동시킬 수 있는지 또는 파일을 삽입하기 위해 이미지를 삽입하는 다른 방법이 있는지 알고 싶습니다.
또한, 참고로, 나는 XSSFWorkbook
, XSSFSheet
를 사용하여, 그러한 (안 HSSF
), 내 출력 파일은 어떤 도움/제안에 감사드립니다 .xlsx
입니다 해요, 감사합니다!
첫 번째 방법의 오류는 'patriarch','anchor' 또는'index'가 null이라는 것을 의미합니다. –
@OutlawLemur 테스트 프린트를 추가하고 총 소유주가 null이라는 것을 알았습니다. 나는 첫 번째 줄에 축복을 창조했다. 어떻게 고칠 수 있는가? – sora0419
'as HSSFPatriach'로 전송해야하나요? 메서드는 이미 해당 유형을 반환합니다. –