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++;
}
}
ここでは、画像も来ていてもすべて正常に機能しています...しかし、画像のセルの位置を決定する方法。
画像は来ていますが、セルにはありません。助けてください。ここでは、相互運用のみを使用する必要があります。画像をセルに合わせたい