c\#NPOI 를 사용 하여 Excel 의 그림 을 가 져 와 로 컬 에 저장 하 는 알고리즘
생각: NPOI 에서 GetAllPictures()방법 으로 이미지 정 보 를 얻 기
단계:
1.Windows 창 프로그램 새로 만 들 기
2.데스크 톱 에 엑셀 을 새로 만 들 고 그림 두 장 을 붙 입 니 다.
다음 그림:
3.Form 에 button 을 끌 어 다 놓 기
4.button 을 눌 러 이벤트 방법 에 기록 하고 그림 을 읽 는 방법:ExcelToImage
클릭 이벤트 방법 은 다음 과 같 습 니 다:
private string exclePath = @"C:\users\lenovo\Desktop\testPic.xls";
private void button2_Click(object sender, EventArgs e)
{
List<string> listpath = new List<string>{};
string savePath = Path.Combine("E:\\","pic");
if(!Directory.Exists(savePath))// ,
Directory.CreateDirectory(savePath);
bool result = ExcelToImage(exclePath, savePath, ref listpath);
if(result)
MessageBox.Show(" ");
else
MessageBox.Show(" ");
}
5.그 중에서 ExcelToImage 방법 사건 은 다음 과 같다.
/// <summary>
/// excel
/// </summary>
/// <param name="filepath"> </param>
/// <param name="savepath"> </param>
/// <param name="listPath"> list</param>
/// <returns> </returns>
private bool ExcelToImage(string filepath,string savepath,ref List<string> listPath)
{
try
{
using (FileStream fsReader = File.OpenRead(filepath))
{
HSSFWorkbook wk = new HSSFWorkbook(fsReader);
IList pictures = wk.GetAllPictures();
int i = 0;
foreach (HSSFPictureData pic in pictures)
{
//if (pic.Data.Length == 19504) // , pic.data
// continue;
string ext = pic.SuggestFileExtension();//
string path = string.Empty;
if (ext.Equals("jpg"))
{
Image jpg = Image.FromStream(new MemoryStream(pic.Data));// pic.Data
path = Path.Combine(savepath, string.Format("pic{0}.jpg", i++));
jpg.Save(path);//
}
else if (ext.Equals("png"))
{
Image png = Image.FromStream(new MemoryStream(pic.Data));
path = Path.Combine(savepath, string.Format("pic{0}.png", i++));
png.Save(path);
}
if (!string.IsNullOrEmpty(path))
listPath.Add(path);
}
}
}
catch (Exception ex)
{
return false;
}
return true;
}
결과:주석:본 알고리즘 HSSFWorkbook 류 이기 때문에 대응 하 는 엑셀 은 2003 년 이전(2003 포함)버 전 이 어야 합 니 다.확장 자 는'xls'입 니 다.
HSSFWorkbook:Excel 2003 이전(2003 포함)을 작 동 하 는 버 전 입 니 다.확장 자 는.xls 입 니 다.
XSSFWorkbook:Excel 2007+를 조작 하 는 버 전 입 니 다.확장 자 는.xlsx 입 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.