У меня есть приложение, в котором я пытаюсь записать в файл Excel. Кажется, он не работает.
Вот мой код:
using System;
using System.Drawing;
using Microsoft.Office.Interop.Excel;
namespace Image2Excel {
class Engine {
public static void go(string imageFilename, string excelFilename = null) {
//Image img = Image.FromFile(imageFilename);
Bitmap btm = (Bitmap)Bitmap.FromFile(imageFilename, false);
Image img = Image.FromFile(imageFilename, false);
if (btm != null) {
Color[][] colorArray = new Color[btm.Width][];
for (int x = 0; x < btm.Width; x++) {
colorArray[x] = new Color[btm.Height];
for (int y = 0; y < btm.Height; y++) {
colorArray[x][y] = btm.GetPixel(x, y);
}
}
var excel = new Microsoft.Office.Interop.Excel.Application();
var workbook = excel.Workbooks.Add(Type.Missing);
var worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.ActiveSheet;
worksheet.Name = "sheet1";
worksheet.Cells[1,1] = "top left";
worksheet.Cells[1,2] = "top right";
worksheet.Cells[2,1] = "bottom left";
worksheet.Cells[2,2] = "bottom right";
workbook.SaveAs("temp.xlsx");
workbook.Close();
excel.Quit();
Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excel);
}
}
}
}
Я пытаюсь написать какой-то текст в первые 4 ячейки электронной таблицы. Это не работает. Когда я открываю файл, я ничего не вижу в ячейках.
Я вижу, что имя листа установлено на то, что я установил, так что я знаю, что оно записывает в файлы.
One при отладке я заметил, что рабочий лист.Cells [1,1] имеет значение null после его установки. Мне интересно, если мне нужно установить ячейку для объекта перед записью в него. Но я не уверен, как. Кажется, я не в состоянии сделать это:
worksheet.Cells[1,1] = new Microsoft.Office.Interop.Excel.Cell();
Наведение указателя мыши на ячейки говорит мне, что это объект Range, но я также не уверен, как установить его в диапазон. Я попробовал это:
worksheet.Range["A1"].Value = "hello";
worksheet.Range["A1"].Value2 = "hello";
... но они тоже не работают. worksheet.Range остается нулевым, как worksheet.Cells.
Как я могу убедиться, что для worksheet.Cells [1,1] или worksheet.Range ["A1"] задан объект, который будет принимать строковое значение ? Спасибо.
Вы можете найти мое приложение на github: https://github.com/gibran-shah/Image2Excel
Я использую Microsoft.Office.Interop.Excel версии 15.0.4795.1000.
У меня установлен Excel 2010 на моем компьютере.