.net操作office示例
作者:随风 日期:2009-11-04 10:36:47
上班时间,写着写着代码,想还是应该把前几天做的.net操作office的demo上传上来,当着个备份也好。
.net 的office操作使用的地方还是蛮多的,不过有时候也比较麻烦,前几天正好比较没事,就学习了下Aspose这套组件的用法,顺便做了个简单的操作excel的demo,主要的点还是在读取excel中的图片,并将该图片在哪个单元格中识别出来。
废话不宜太多,上代码先:
private void ReadExcelData()
{
string filePath = Server.MapPath(@"test.xls");
if (!File.Exists(filePath))
{
Response.Write("不存在测试文件:test.xls");
Response.End();
}
Workbook wb = new Workbook();
wb.Open(filePath);
if (wb.Worksheets.Count > 0)
{
Worksheet ws = wb.Worksheets[0];
System.Data.DataTable dt = new System.Data.DataTable();
for (int i = 0 ; i < ws.Cells.Columns.Count ; i++)
{
dt.Columns.Add(i.ToString());
}
Pictures pics = ws.Pictures;
List<Picture> lstPic = new List<Picture>();
for (int k = 0 ; k < pics.Count ; k++)
{
lstPic.Add(pics[k]);
}
for (int i = 0 ; i < ws.Cells.Rows.Count ; i++)
{
List<string> lstRow = new List<string>();
for (int j = 0 ; j < ws.Cells.Columns.Count ; j++)
{
lstRow.Add(ws.Cells[i , j].StringValue);
List<Picture> lstP = lstPic.Where(o => o.UpperLeftRow == i && o.UpperLeftColumn == j).ToList();
for (int k = 0 ; k < lstP.Count ; k++)
{
System.Drawing.Image img = System.Drawing.Image.FromStream(new MemoryStream(lstP[k].Data));
img.Save(string.Format("{0}\\{1}_{2}_{3}.jpg" , "E:\\Project\\ExcelPicDemo\\ExcelPicDemo\\Img" , i.ToString() , j.ToString() , k.ToString()));
img.Dispose();
lstRow[j] = lstRow[k].ToString() + string.Format(" {0}/{1}_{2}_{3}.jpg " , "Img" , i.ToString() , j.ToString() , k.ToString());
}
}
dt.Rows.Add(lstRow.ToArray());
}
this.gdvList.DataSource = dt;
this.gdvList.DataBind();
}
else
{
Response.Write("文档中不存在任何工作表。");
Response.End();
}
}
}
重点是靠图片的UpperLeftRow ,UpperLeftColumn 这两个属性来判定它属于哪个单元格了。其他的没啥好说的。
最后上demo完整代码,和aspose破解组件。
文章来自: 本站原创
Tags: aspose office Excel word .Net
订阅
上一篇
下一篇
Demo下载