ищу способ / компоновку для чтения / редактирования настоящих файлов MS Excel 2007 - PullRequest
2 голосов
/ 05 ноября 2010

Я ищу руководство (OLE / ADO) или готовые нативные компоненты для чтения / редактирования / записи файлов MS Excel 2007.

Пока что я попробовал Native excel ver2 и txlsfile ver 4, XLSReadWriteII ver 4, но кажетсяnative Excel не может открыть Excel 2007.

txlsfile или XLSReadWriteII (извините, я удалил их и не могу вспомнить, какой из них был) можно открывать / читать, но при редактировании и сохранении он создает только 4 КБ поврежденного файла xlsx.

Ответы [ 2 ]

4 голосов
/ 05 ноября 2010

для использования ADO для подключения файла Excel 2007 вы можете использовать строку подключения, подобную этой

Provider = Microsoft.ACE.OLEDB.12.0; Источник данных = c: \ myFolder \ myExcel2007file.xlsx; Extended Properties = "Excel 12.0 Xml; HDR = YES";

эта строка подключения использует поставщика Microsoft.ACE.OLEDB.12.0, который можно загрузить с (2007 Office System Driver: Data Connectivity Components).

попробуйте этот код, который показал, как подключиться к файлу Excel 2007 с помощью ADO.

const
ExcelStr='Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Extended Properties="Excel 12.0 Xml;HDR=YES";';

procedure TForm1.ButtonOpen(Sender: TObject);
begin
 try
   ADOConnection1.ConnectionString:=Format(ExcelStr,['C:\Documents and Settings\Administrator\My Documents\My Dropbox\excelfile2007.xlsx']); // set the name of your excel file
   ADOConnection1.Connected:=True; //connect to the excel file
   ADODataSet1.CommandText:='Select * from [Sheet1$]';//create your sql query
   ADODataSet1.Open; //open the excel file
    while not ADODataSet1.eof do 
    begin
      //do your job here. 
      //ADODataSet1.FieldByName('Field1').AsString



     ADODataSet1.Next;
    end;
 except
    on E:Exception do
      ShowMessage(Format('%s Error %s',[E.Classname, E.Message]));
 end;
end;
0 голосов
/ 05 ноября 2010

Несколько компонентов, которые я использовал в прошлом: Расширенный импорт / экспорт данных EMS .

Они всегда просто работали для моих нужд.

...