1

Excelへのエクスポートを行っていますが、画像もExcelセルにエクスポートする必要があります。

public void GenerateAndSaveExcel(DataSet ds)
{
    try
    {
        bool excelCreated = CreateExcelApplication();
        bool workbookCreated = CreateWorkBook();
        if (excelCreated && workbookCreated)
        {
            bool workSheetAdded = AddWorkSheet();
            if (workSheetAdded)
            {
                CreateHeader(ds.Tables[0].Columns);
                AddRows(ds.Tables[0].Rows, ds.Tables[0].Columns);

                Save(@"C:\Worksheet1.xlsx");

            }
        }
        else
        {

        }
    }
    catch (System.UnauthorizedAccessException)
    {

    }
    catch (System.Runtime.InteropServices.COMException)
    {

    }
    catch (System.IO.IOException)
    {

    }
    finally
    {
        excelApp.Quit();
        workBook = null;
        workSheet = null;
        Dispose();
    }
}

ここでは、ID、Name、SEREENSHOT1、SEREENSHOT2 のような列があるとします。ここで、SEREENSHOT1、SEREENSHOT2 はイメージ バイト配列です。

AddRows メソッドですべての計算を行っています

public void AddRows(DataRowCollection dataRows, DataColumnCollection colMap)
{
    Microsoft.Office.Interop.Excel.Worksheet workSheet = workSheets.First();
    string startIndex = "B1";
    Microsoft.Office.Interop.Excel.Range range = workSheet.get_Range(startIndex, Missing.Value);

    int rowIndex = 2;
    foreach (var row in dataRows)
    {
        int colIndex = 1;
        foreach (DataColumn column in colMap)
        {
            range = (Microsoft.Office.Interop.Excel.Range)workSheet.Cells[rowIndex, colIndex++];
            object value = ((System.Data.DataRow)(row)).ItemArray[column.Ordinal];
            if (column.ColumnName != "SCREENSHOT1" && column.ColumnName != "SCREENSHOT2")
            {
                range.set_Value(Microsoft.Office.Interop.Excel.XlRangeValueDataType.xlRangeValueDefault, value);
            }
            if (column.ColumnName == "SCREENSHOT1" && !string.IsNullOrEmpty(value.ToString()))
            {
                string path = ConfigurationSettings.AppSettings["imagepathPath"]
                           + @"\img" + ((System.Data.DataRow)(row)).ItemArray[0].ToString() + "SRN1" + ".jpg";
                workSheet.Shapes.AddPicture(path, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 10, 10, 200, 200);
            }
            if (column.ColumnName == "SCREENSHOT2" && !string.IsNullOrEmpty(value.ToString()))
            {
                string path = ConfigurationSettings.AppSettings["imagepathPath"]
                           + @"\img" + ((System.Data.DataRow)(row)).ItemArray[0].ToString() + "SRN1" + ".jpg";
                workSheet.Shapes.AddPicture(path, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, 10, 10, 100, 100);
            }
        }
        rowIndex++;
    }
}

ここでは、画像も来ていてもすべて正常に機能しています...しかし、画像のセルの位置を決定する方法。

画像は来ていますが、セルにはありません。助けてください。ここでは、相互運用のみを使用する必要があります。画像をセルに合わせたい

4

0 に答える 0