2016-03-21 10 views
0

サーバーにExcelファイルをアップロードすると、アップロードしたファイルの画像を抽出してルートディレクトリに保存します。私はそれがうまく動作するWindowsアプリケーションでそれを試してみましたが、Webアプリケーションのために動作していないようです。このコードは含まれていWebアプリケーションでExcelの画像を抽出しますか?

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); 
Microsoft.Office.Interop.Excel.Workbook wb = excelApp.Workbooks.Open(file, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing); 

Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Sheets[1]; //Selects the first sheet 
Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)ws.Cells[1, 1];  //Select cell A1 
object cellValue = range.Value2; 

#region Extract the image 
Microsoft.Office.Interop.Excel.Picture pic = (Microsoft.Office.Interop.Excel.Picture)ws.Pictures(1); 

if (pic != null) 
{ 
    //This code will detect what the region span of the image was 
    int startCol = (int)pic.TopLeftCell.Column; 
    int startRow = (int)pic.TopLeftCell.Row; 
    int endCol = (int)pic.BottomRightCell.Column; 
    int endRow = (int)pic.BottomRightCell.Row; 


    pic.CopyPicture(Microsoft.Office.Interop.Excel.XlPictureAppearance.xlScreen, Microsoft.Office.Interop.Excel.XlCopyPictureFormat.xlBitmap); 
    //From here How to save in the root directory ?? 
} 
#endregion 

//Close the workbook 
wb.Close(false, Type.Missing, Type.Missing); 

//Exit Excel 
excelApp.Quit(); 

は、画像を取得し、私は、ルートフォルダに保存する方法を、それを把握することはできません。

私はスプレッドシートから画像を抽出する別の方法もあります。

答えて

0

次のコードは、Webおよびデスクトップアプリケーションで動作し、スプレッドシート内のイメージをルートのフォルダに抽出します。

//'file' could be a HttpPostedFileBase from client side 
var fileName = Path.GetFileName(file.FileName); 
var physicalPath = Path.Combine(Server.MapPath("~/UploadedPO"), fileName); 

file.SaveAs(physicalPath); 

Excel.Application excelApp = new Excel.Application(); 
Excel.Workbook wb = excelApp.Workbooks.Open(physicalPath, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing); 
Excel.Worksheet ws = (Excel.Worksheet)wb.Sheets[1]; 


var app = new Excel.Application(); 
Excel.Workbook workbook = wb; 
Excel.Worksheet wsCurrent = ws; 
Excel.XlFileFormat format = Excel.XlFileFormat.xlHtml; 

wsCurrent.SaveAs(physicalPath, format); 

workbook.Close(); 
関連する問題