Я начинающий. Суть проблемы в следующем. Нужно Считать инфу с exel файла сделать необходимые расчеты, используя данную инфу, и записать расчеты в другую таблицу...
Возможно ли такое? Если невозможно счиатать из exel, как подключить или импортировать access? Как записать и в какую лучше таблицу, sql в c# или опять в access (exel)(если возможно)?
Пожалуйста, если можно, поподробнее, и приведите код, отрывки кода, чтобы хотя бы понятно было куда копать...
Спасибо.
07.09.07 20:12: Перенесено модератором из 'C/C++' — Odi$$ey
Здравствуйте, Drakon2517.
Обязательно на C#? (Форум-то про C/C++.) Могу привести пример на Delphi, там очень удобно работать с IDispatch. Например, есть Excel-таблица (.xls-файл) с двумя колонками чисел. Нужно вычислить сумму и разность каждой пары и записать результаты в новый файл. На Delphi это можно сделать так:
uses
ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
Excel: Variant; // хранит указатель на IDispatch
InputSheet: Variant;
NumRows: Integer;
OutputBook: Variant;
OutputSheet: Variant;
RowIndex: Integer;
x, y: Double; // вещественные числа (floating point, двойная точность)
begin
Excel := CreateOleObject('Excel.Application'); // Excel должен быть установлен на компьютере
Excel.Visible := True; // удобно во время разработки; можно убрать
Excel.Workbooks.Open('C:\Data\Input.xls');
InputSheet := Excel.Workbooks[1].Worksheets[1];
OutputBook := Excel.Workbooks.Add;
OutputSheet := OutputBook.Worksheets[1];
NumRows := InputSheet.UsedRange.Rows.Count;
for RowIndex := 1 to NumRows do
begin
x := InputSheet.Cells[RowIndex, 1];
y := InputSheet.Cells[RowIndex, 2];
OutputSheet.Cells[RowIndex, 1] := x + y;
OutputSheet.Cells[RowIndex, 2] := x - y;
end;
Excel.DisplayAlerts := False;
OutputBook.SaveAs('C:\Data\Output.xls');
Excel.Quit;
end;
Код устанавливает свойство DisplayAlerts в False. Это нужно чтобы Excel молча (без вопрошающего message box-а) записал новый файл поверх старого файла с таким же именем. В Excel-ной справке по программированию написано:
DisplayAlerts Property
…
Remarks
…
When using the SaveAs method for workbooks to overwrite an existing file, the 'Overwrite' alert has a default of 'No', while the 'Yes' response is selected by Excel when the DisplayAlerts property is set equal to True.
Также можете посмотреть
экспорт в Excel на C++Автор: Пётр Седов
Дата: 26.05.07
.
Здравствуйте, Drakon2517, Вы писали:
D>Извиняюсь, если создал тему не в том разделе (А где надо, не нашел, в ".NET"?)...
Думаю да, форум
«.NET» подошёл бы лучше. Ещё есть форум
«COM/DCOM/ActiveX», но он вялый.
D>Спасибо. Но все же надо в с#. Может есть какие ссылки, которые помогут в данном вопросе...
1. Статья
«Взаимодействие Microsoft Excel с приложениями .NET — позднее связывание»Автор(ы): Гасанов Ровшан Закариевич
Дата: 17.11.2005
Статья рассказывает о динамическом взаимодействии с Excel посредством OLE Automation и рефлексии.
Требуется знание С#.
, автор: Ровшан Гасанов.
2. И вообще раздел
«MS Office».