C# 把excell 轉換成圖片

public  class CoverExcellToImage
{
private static string SAVEEXCELJPG = @"c:/temp/{0}.jpg";
private static readonly string[] ArrRang = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };


public static event TECOSFIS.SFIS.UpdateImage.ShowMessage eventShowMessage;
public static string StrRouseFile = "";
public static List<string> ListFileName = new List<string>();

public static string GetExcel(string excelFilePath)
{
if (!System.IO.Directory.Exists("c:/temp")) {

System.IO.Directory.CreateDirectory("c:/temp");
}

Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
app.DisplayAlerts = false;
object objMis = Type.Missing;
Microsoft.Office.Interop.Excel.Workbook singleExcel = app.Workbooks.Open(excelFilePath, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis);
try
{
StrRouseFile = excelFilePath;
//wsheet.UsedRange.Select();
if (eventShowMessage != null)
{
eventShowMessage(1, singleExcel.Worksheets.Count);

}
for (int i = 1; i <= singleExcel.Worksheets.Count; i++)
{
Microsoft.Office.Interop.Excel.Worksheet wsheet = (Microsoft.Office.Interop.Excel.Worksheet)singleExcel.Worksheets[i];


ListFileName.Add(wsheet.Name);
object ranobj = DBNull.Value;

//设置选择单元格,在复制出来。
int iRows =36;
int iCols = 8;
#warning 这里需要修改的内容
wsheet.get_Range("A5", ArrRang[iCols] + iRows.ToString()).Copy(ranobj);
IDataObject iData = Clipboard.GetDataObject();
Bitmap bits = (Bitmap)iData.GetData(DataFormats.Bitmap);
Bitmap myBitmap = new Bitmap(bits.Width, bits.Height);
Graphics g = Graphics.FromImage(myBitmap);
g.DrawImage(bits, 0, 0);

myBitmap.Save(string.Format(SAVEEXCELJPG, wsheet.Name));
Clipboard.SetDataObject("");
myBitmap.Dispose();
bits.Dispose();
if (wsheet != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(wsheet);
wsheet = null;
}
if (eventShowMessage != null)
{
eventShowMessage(2, i);

}
}


}
catch (Exception Excel)
{
throw Excel;
}
finally
{
#region 释放资源
singleExcel.Close(null, null, null);
app.Workbooks.Close();
app.Quit();
if (singleExcel != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(singleExcel);
singleExcel = null;
}
if (app != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
app = null;
}
GC.Collect();
#endregion
}
return string.Empty;
}


}

原理:

       讀取 excell文件中每一個 sheet,拷貝數據到粘貼板中,然後把粘貼板中的數據,保存成圖片

posted @ 2012-03-05 18:01  無限遐想  阅读(469)  评论(0编辑  收藏  举报