나는 당신의 열 행 모델에 충실하면 내가 지금처럼 테이블 레이아웃을 사용하십시오 :
**table sheetvalues**
id: integer auto_increment primary key
sheet_id: integer foreign key to table sheet
rownr: integer not null indexed
colnr: integer not null indexed
value: integer (or whatever)
**table sheet**
id: integer auto_increment primary key
sheetname: varchar
rowcount: integer
colcount: integer
당신은 C#을, PHP와 같은 언어의 동적 SQL 문을 구축하여 테이블을 가져올 수 있습니다, 펄, 자바 또는 뭐든간에.
델파이 의사 코드를 사용할 것입니다.
function GetConversionSQL(DBName, Sheetname, SheetDef, DataTable: string): string;
var
DefQuery: TQuery;
Rowcount: integer;
ColCount: integer;
i: integer;
Select: string;
begin
DefQuery:= TQuery.Create(Form1);
try
DefQuery.DatabaseName:= DBName;
DefQuery.SQL.Text:= 'SELECT rowcount, colcount FROM '+SheetDef+
'WHERE sheetname = ' + sheetname;
DefQuery.Open;
//DefQuery will open on the first and only row
RowCount:= DefQuery.FieldByName('Rowcount').AsInteger;
ColCount:= DefQuery.FieldByName('Colcount').AsInteger;
finally
DefQuery.Free;
end;
Select:= '';
if colcount > 0 then begin
for i:= 1 to colcount do begin
Select:= Select + 'SELECT where_col, col'+IntToStr(i)+' FROM '+DataTable;
if i < colcount then Select:= Select + ' UNION ';
end;
Select:= 'INSERT INTO sheetvalues '+ Select;
end;
Result:= Select;
end;
procedure ConvertATable;
var
ConversionSQL: string;
ImportQuery: TQuery;
begin
ConversionSQL:= GetConversionSQL('Mydatabase', 'sheet1', 'sheetdef'
, 'table_sheet1');
ImportQuery:= TQuery.Create(Form1);
try
ImportQuery.DatabaseName:= 'MyDatabase';
ImportQuery.SQL.Text:= ConversionSQL;
ImportQuery.ExecSQL;
finally
ImportQuery.Free;
end;
end;
어떤 데이터베이스가 있습니까? – HLGEM