Отваряне на MS Excel Delphi файл (клетъчен формат)

Здравейте на всички! Отваряне на файл от Delphi с помощта на Excel OleObject

функция XlsToStringGrid(AGrid: TStringGrid; AXLSFile: низ): Boolean; var XLApp, Sheet: OLEVariant; Матрица на обхват: Вариант; x, y: Integer; begin Result := False; XLApp := CreateOleObject("Excel.Application"); опитайте XLApp.Visible := False; XLApp.Workbooks.Open(AXLSFile);

Sheet := XLApp.Workbooks[1].WorkSheets[1]; Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

x := XLApp.ActiveCell.Row; y := XLApp.ActiveCell.Column;

//XLApp.Range["A1", XLApp.Cells.Item[X, Y]].NumberFormat:="@"; . И така нататък. . накрая ако не VarIsEmpty(XLApp) тогава започва XLApp.DisplayAlerts := False; XLApp.Quit; XLAPP := Неприсвоен; Лист := Неприсвоен; Резултат := Вярно; край; край; край;

Тук има такъв проблем. Excel по подразбиране отваря всички клетки в ОБЩ формат, т.е. преобразува от както пожелае. И ми трябва в ТЕКСТ, т.е. така че клетките да се отварят такива, каквито са. Опитвам се да сменя формата (заремарени редове) - изглежда, че работи, но. Клетките ВЕЧЕ са преформатирани, т.е. това не прави нищо и обърква данните още повече и форматът трябва да бъде променен (настроен) ПРЕДИ ОТВАРЯНЕ НА ФАЙЛА (попълване на клетки).

Как мога да направя това? Благодаря ви.

Моля, не предлагайте опцията „предварително запазване на xls файл чрез задаване на текстов формат за всички клетки“. (Excel отваря и други "клетъчни" формати)

Не е ясно какво не работи. Изглежда, че правите всичко както трябва. Като цяло логиката е следната. Отворете файла. Задайте формата за диапазона от клетки. Въведете данни в тези клетки.

Ето такова нещо. Не е нужно да въвеждам данни в клетки на Excel, трябва да ги взема от там (от готовия файл). И "отваря неправилно" - при отварянеданните се преобразуват.

>Отворете файла. >Задайте формата за диапазона от клетки. Не работи - клетките вече са преобразувани и промяната на формата обърква още повече данните.

Накратко, най-вероятно въпросът се свежда до следната формулировка:“Как мога да настроя Excel-OLE обект от под Delphi, така че по подразбиране всички клетки да са във формат “текст”, а не в “общ”?”

Доколкото си спомням Excel отваря файла с форматите на клетките, които са зададени при създаването и редактирането на файла. Тоест той трябва да е преобразувал данните, когато въвежда данни в клетките. Може би проблемът не е втрансформацията при отваряне, а втрансформацията на данни при четене на съдържанието на клетките във вашите променливи от вече отворена работна книга?

2 Символ No. Всичко е както го описах. Всъщност с Excel започнах да се занимавам като с универсално нещо, което отваря куп формати от HTML до DBF. Повече подробности: http://www.dunin.hotmail.ru/xlsimp.html

2. Какъв тип данни е проблемът? Случайно да не е с датата?

В Excel "e (празен лист), форматирате необходимите клетки, запазвате ги като шаблон (* .xlt). След това отваряте вашия шаблон във вашата програма и. Само във вашата програма се отваря само един AXLSFile файл, но къде са клетките в общия формат?

А! Значи не се отваря .xls файлът?

функция Open(const Filename: WideString; UpdateLinks: OleVariant; ReadOnly: OleVariant; Format: OleVariant; Password: OleVariant; WriteResPassword: OleVariant; IgnoreReadOnlyRecommended: OleVariant; Origin: OleVariant; Разделител: OleVariant; Editable: OleVariant; Уведомяване: OleVariant; Конвертор: OleVariant; AddToMru: OleVariant; lcid: Цяло число): Работна книга; безопасно обаждане;

Ами само в полето Конвертор можеда е нещо полезно, а дори и това не е факт.

2 Gloomer Чрез шаблон - това е вариант :) Нещо не ми хрумна веднага. Веднага: Sheet := XLApp.Workbooks[1].WorkSheets[1]; . задайте формати . Sheet.SaveAs(?) - какво трябва да напиша тук, за да запазя шаблона? достатъчно ли е да заменитеиме+.xlt?

> Sheet.SaveAs(?) - какво трябва да напиша тук, за да запазя шаблона? достатъчно е да замените само име+.xlt?

Точно така, стига толкова. Когато отворите шаблон, името на дока не се присвоява, по-точно "Template_name" + dock_number.xls И още нещо - вашите данни експортирани ли са от Excel или импортирани? Ако се експортират, тогава каква е разликата във формата - конвертирате mac според нуждите. Ако се импортират, тогава задавате формата и след това присвоявате стойността на клетката.