Экспорт данных DataGridView с изображениями в Excel, HTML или Word с надлежащим форматированием таблицы - PullRequest
2 голосов
/ 29 ноября 2011

У меня есть сетка данных с загруженными в нее изображениями.Таблица, которая является источником для этой сетки данных, имеет путь для изображений, и я загружаю изображения, используя этот путь.Я пытался экспортировать данные в Excel и был успешным, но, похоже, с некоторыми изображениями.Пожалуйста, помогите?Подойдет любая помощь вместо Excel, HTML, Word или чего-либо еще, но, пожалуйста, предоставьте подробную справку, или это вызовет много проблем.

Вот код, который я использовал для экспорта в Excel:

saveFileDialog1.Filter = "Excel (*.xls)|*.xls";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if (!saveFileDialog1.FileName.Equals(String.Empty))
                {
                    FileInfo f = new FileInfo(saveFileDialog1.FileName);
                    if (f.Extension.Equals(".xls"))
                    {
                        Excel.Application xlApp;
                        Excel.Workbook xlWorkBook;
                        Excel.Worksheet xlWorkSheet;
                        object misValue = System.Reflection.Missing.Value;

                        xlApp = new Excel.ApplicationClass();
                        xlWorkBook = xlApp.Workbooks.Add(misValue);
                        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
                        int i = 0;
                        int j = 0;

                        for (i = 0; i <= dataGridView1.RowCount - 1; i++)
                        {
                            for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
                            {

                                DataGridViewCell cell = dataGridView1[j, i];
                                xlWorkSheet.Cells.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
                                xlWorkSheet.Columns.AutoFit();
                                if (cell.Value.GetType() == typeof(Bitmap))
                                {
                                    xlWorkSheet.Cells[i + 1, j + 1] = ReadFile((Bitmap)cell.Value);
                                }
                                else
                                {
                                    xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
                                }

                            }
                        }

                        xlWorkBook.SaveAs(saveFileDialog1.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                        xlWorkBook.Close(true, misValue, misValue);
                        xlApp.Quit();

                        releaseObject(xlWorkSheet);
                        releaseObject(xlWorkBook);
                        releaseObject(xlApp);

                        MessageBox.Show("Excel file created , you can find the file " + saveFileDialog1.FileName);
                    }
                    else
                    {
                        MessageBox.Show("Invalid file type");
                    }
                }
                else
                {
                    MessageBox.Show("You did pick a location " +
                                    "to save file to");
                }
            }

Формат таблицы:

ax_no rm_no fullName Типы фотографий // путь к файлу.Отпечаток пальца // путь к файлу.

Все строки.Я также пытался использовать Spire.dataExport и iTextSharp, но это не работает.

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Если вам нужно поместить изображение в ячейку, попробуйте этот код:

if (cell.Value.GetType() == typeof(Bitmap))
{
    // You have to get original bitmap path here
    string imagString = "bitmap1.bmp";
    Excel.Range oRange = (Excel.Range)xlWorkSheet.Cells[i + 1, j + 1]; 
    float Left =(float) ((double)oRange.Left);
    float Top =(float) ((double)oRange.Top);
    const float ImageSize=32;
    xlWorkSheet1.Shapes.AddPicture(imagString, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue, Left, Top, ImageSize, ImageSize);
    oRange.RowHeight = ImageSize + 2;
}
else
{
    xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
}
0 голосов
/ 29 ноября 2011

Ознакомьтесь с этой статьей Экспорт DataGridView в файл Excel / PDF / image с помощью создания отчетов служб Reporting Services .

Также ознакомьтесь с Комплект элементов управления WinG в Infragistics . Он имеет очень настраиваемый UltraWinGrid для визуализации данных вашей таблицы и мощные библиотеки Excel, для которых не требуется установленный Excell.

И, наконец, взгляните на Stimulsoft Reports: он имеет много форматов экспорта и не требует приложения Excel.

...