/*
*Made By Anby
* 2012-10.31
* Good Luck!~
* Excel转换jpg
* 记得引用Microsoft.Office.Interop.Excel;
*/
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using EXCEL = Microsoft.Office.Interop.Excel;
using System;
using System.Diagnostics;
using System.IO;
namespace ExcelConvertHelper
{
class ExcelToImage
{
/// <summary>
/// 打开Excel文件
/// </summary>
/// <returns></returns>
public static string OpenExcelFile()
{
OpenFileDialog opf = new OpenFileDialog();
string excelFilePath = "";
opf.Filter = "Excel文件(*.xls)|*.xls";
opf.FilterIndex = 1;
if (opf.ShowDialog() == DialogResult.OK)
{
excelFilePath = opf.FileName;
}
else
{
excelFilePath = "";
}
return excelFilePath;
}
public static string SaveExcelFile()
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
string excelSavePath = "";
if (fbd.ShowDialog() == DialogResult.OK)
{
excelSavePath = fbd.SelectedPath;
}
else
{
excelSavePath = "";
}
return excelSavePath;
}
/// <summary>
/// 结束打开的Excel进程
/// </summary>
public static void KillProgram()
{
foreach (Process process in Process.GetProcesses())
{
if (process.ProcessName == "EXCEL") //要结束程序的名称
{
process.Kill();
}
}
}
public static void FileCreate(string path)
{
DirectoryInfo dirInfo=new DirectoryInfo(path);
if (dirInfo.Exists == false)
{
dirInfo.Create();
}
else
{
dirInfo.Delete();
dirInfo.Create();
}
}
/// <summary>
/// 将制定的范围单元格excel转换Jpg
/// </summary>
/// <param name="excelFilePath">excel文件路径,EX:@"c:\1.xls"</param>
/// <param name="SaveExcelJPG">图片保存路径,EX:@"c:\test"</param>
/// <param name="cell1"></param>
/// <param name="cell2"></param>
public static void ExcelToImages(string excelFilePath, string SaveExcelJPG,string cell1,string cell2)
{
KillProgram();
FileCreate(SaveExcelJPG);
EXCEL.Application app = new Microsoft.Office.Interop.Excel.Application();
object objMis = System.Type.Missing;
EXCEL.Workbook singleExcel = app.Workbooks.Open(excelFilePath, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis);
try
{
//wsheet.UsedRange.Select();
for (int i = 1; i <= singleExcel.Worksheets.Count; i++)
{
Application.DoEvents();
EXCEL.Worksheet wsheet = (EXCEL.Worksheet)singleExcel.Worksheets[i];
object ranobj = DBNull.Value;
//设置选择单元格,在复制出来。
wsheet.get_Range(cell1, cell2).Copy(ranobj);
//全选单元格,全部复制出来。
//wsheet.UsedRange.Copy(objMis);
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);
string savepath = SaveExcelJPG + wsheet.Name + ".jpg";
myBitmap.Save(savepath, System.Drawing.Imaging.ImageFormat.Jpeg);
Clipboard.Clear();
myBitmap.Dispose();
bits.Dispose();
}
MessageBox.Show("转换成功!");
}
catch (Exception e)
{
MessageBox.Show("转换失败!");
}
finally
{
KillProgram();
//singleExcel.Close(objMis, objMis, objMis);
//app.Quit();
}
}
/// <summary>
/// 将用户使用过的excel单元格截图保存为jpg
/// </summary>
/// <param name="excelFilePath">源excel路径</param>
/// <param name="SaveExcelJPG">目标图片的路径(不包含图片名)</param>
/// <returns></returns>
public static void ExcelToJpg(string excelFilePath, string SaveExcelJPG)
{
KillProgram();
EXCEL.Application app = new Microsoft.Office.Interop.Excel.Application();
object objMis = Type.Missing;
EXCEL.Workbook singleExcel = app.Workbooks.Open(excelFilePath, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis, objMis);
try
{
//wsheet.UsedRange.Select();
for (int i = 1; i <= singleExcel.Worksheets.Count; i++)
{
EXCEL.Worksheet wsheet = (EXCEL.Worksheet)singleExcel.Worksheets[i];
object ranobj = DBNull.Value;
//设置选择单元格,在复制出来。
//wsheet.get_Range("A1", "AA22").Copy(ranobj);
wsheet.UsedRange.Copy(ranobj);
//全选单元格,全部复制出来。
//wsheet.UsedRange.Copy(objMis);
//Clipboard.SetDataObject(objMis);
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(SaveExcelJPG, System.Drawing.Imaging.ImageFormat.Jpeg);
Clipboard.Clear();
myBitmap.Dispose();
bits.Dispose();
}
MessageBox.Show("转换成功!");
}
catch (Exception Excel)
{
MessageBox.Show("转换失败!");
}
finally
{
KillProgram();
//singleExcel.Close(objMis, objMis, objMis);
//app.Quit();
}
}
}
}