С#: Как получить доступ к ячейке Excel?
Я пытаюсь открыть файл Excel и заполнить его ячейки данными? До сих пор я сделал следующее кодирование.
В настоящее время я нахожусь на этом этапе со следующим кодом, но все же я получаю ошибки:
Microsoft.Office.Interop.Excel.ApplicationClass appExcel =
new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
// is there already such a file ?
if (System.IO.File.Exists("C:\\csharp\\errorreport1.xls"))
{
// then go and load this into excel
Microsoft.Office.Interop.Excel.Workbooks.Open(
"C:\\csharp\\errorreport1.xls", true, false,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value);
}
else
{
// if not go and create a workbook:
newWorkbook = appExcel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel._Worksheet excelWorksheet =
(Microsoft.Office.Interop.Excel._Worksheet)
newWorkBook.Worksheets.get_Item(1);
}
i++;
j = 1;
j++;
objsheet.Cells(i, j).Value = "Tabelle: " + rs.Fields["Table_Name"];
j++;
objsheet.Cells(i, j).Value = "kombinationsschluessel:FALL "
+ rs3.Fields[1].Value;
j++;
objsheet.Cells(i, j).Value = "Null Value: ";
j++;
objsheet.Cells(i, j).Value = "Updated with 888";
Это первые 2 ошибки, которые я получаю:
Error 1 An object reference is required for the nonstatic field, method, or
property 'Microsoft.Office.Interop.Excel.Workbooks.Open(string, object,
object, object, object, object, object, object, object, object, object,
object, object, object, object)'
Error 2 The name 'newWorkbook' does not exist in the current context
Ответы
Ответ 1
Если вы пытаетесь автоматизировать Excel, вам, вероятно, не следует открывать документ Word и использовать автоматизацию Word;)
Проверьте это, он должен начать работу,
http://www.codeproject.com/KB/office/package.aspx
И вот какой-то код. Это взято из некоторого моего кода и удалено много вещей, поэтому он ничего не делает и не может компилировать или работать точно, но он должен вас поймать. Он ориентирован на чтение, но должен указывать вам в правильном направлении.
Microsoft.Office.Interop.Excel.Worksheet sheet = newWorkbook.ActiveSheet;
if ( sheet != null )
{
Microsoft.Office.Interop.Excel.Range range = sheet.UsedRange;
if ( range != null )
{
int nRows = usedRange.Rows.Count;
int nCols = usedRange.Columns.Count;
foreach ( Microsoft.Office.Interop.Excel.Range row in usedRange.Rows )
{
string value = row.Cells[0].FormattedValue as string;
}
}
}
Вы также можете сделать
Microsoft.Office.Interop.Excel.Sheets sheets = newWorkbook.ExcelSheets;
if ( sheets != null )
{
foreach ( Microsoft.Office.Interop.Excel.Worksheet sheet in sheets )
{
// Do Stuff
}
}
И если вам нужно вставить строки/столбцы
// Inserts a new row at the beginning of the sheet
Microsoft.Office.Interop.Excel.Range a1 = sheet.get_Range( "A1", Type.Missing );
a1.EntireRow.Insert( Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftDown, Type.Missing );
Ответ 2
Я думаю, что вам нужно объявить связанный лист!
Попробуйте что-то вроде этого
objsheet(1).Cells[i,j].Value;
Ответ 3
Как я работаю для автоматизации Office/Excel:
- Запишите макрос, это приведет к созданию шаблона VBA
- Отредактируйте шаблон VBA, чтобы он соответствовал моим потребностям.
- Конвертировать в VB.Net(маленький шаг для мужчин)
- Оставьте это в VB.Net, гораздо проще, чем с помощью С#
Ответ 4
Try:
Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
Excel.Range oRng;
oXL = new Excel.Application();
oXL.Visible = true;
oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet = (Excel._Worksheet)oWB.Worksheets;
oSheet.Activate();
oSheet.Cells[3, 9] = "Some Text"
Ответ 5
Simple.
Чтобы открыть книгу.
Используйте xlapp.workbooks.Open()
где вы ранее объявляли и инициализировали xlapp как таковую.
Excel.Application xlapp = новый Excel.Applicaton();
Параметры верны.
Затем убедитесь, что вы используете свойство Value2 при назначении значения ячейке, используя либо свойство ячеек, либо объект диапазона.
Ответ 6
Это отлично работает для меня
Excel.Application oXL = null;
Excel._Workbook oWB = null;
Excel._Worksheet oSheet = null;
try
{
oXL = new Excel.Application();
string path = @"C:\Templates\NCRepTemplate.xlt";
oWB = oXL.Workbooks.Open(path, 0, false, 5, "", "",
false, Excel.XlPlatform.xlWindows, "", true, false,
0, true, false, false);
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
oSheet.Cells[2, 2] = "Text";
Ответ 7
Вы можете использовать приведенный ниже код; он отлично работает для меня:
newWorkbook = appExcel.Workbooks.Add();