現有系統中已經可以匯出和匯入xls檔案型別,現在要求可以匯出匯入為WPS檔案型別的。我看了下wps表格和xls表格格式都是差不多的。請高人指教一下,我現在是不是只需要在匯出或者匯入的時候增加WPS型別的選項就可以了?部分源代碼如下:
//得到EXCEL檔案的檔案名及路徑。
function TDbConnXLS.getXLSFileName: String;
var
openXLS:TOpenDialog;
begin
result:='';
openXLS:=TOpenDialog.Create(nil);
openXLS.Filter:='EXCEL(*.xls)|*.xls';
if openXLS.Execute then
result:=openXLS.FileName;
//else Cap_error('檔案打開失敗!');
end;
//初始化
Function TDbConnXLS.init(cap_ShowHand:Tcap_ShowHandle):boolean;
var
resval:Rblstr;
begin
result:=false;
fileName:=getXLSFileName;
if fileName='' then exit;
if copy(fileName,length(fileName)-2,length(fileName))<>'xls' then
begin
cap_ShowHand.cap_error('您選中的檔案不是XLS檔案,請重新選擇!');
exit;
end;
resval:=cap_ShowHand.Cap_Inbox('打開表','請輸入EXCEL檔案中的表名: ','Sheet1');
if resval.bool = false then exit;
tableName:=resval.restr;
if tableName='' then
begin
cap_ShowHand.cap_error('表名不能為空!請輸入表名!');
exit;
end;
connstr:='';
connstr:='Provider=Microsoft.Jet.OLEDB.4.0;';
connstr:=connstr+'Data Source='+fileName+';';
connstr:=connstr+'Extended Properties=Excel 8.0;';
connstr:=connstr+'Persist Security Info=False;';
adoConn:=TADOConnection.Create(nil);
adoConn.ConnectionString := connstr;
adoConn.LoginPrompt:=false;
adoQuery:=TADOQUery.Create(nil);
adoQuery.Connection:=adoConn;
result:=true;
end;
//title Excel表中的列名
//將listView的內容保存到Excel中
function TDbConnXLS.SavetoExcel(title: WideString; lv: TListView;cap_ShowHand:Tcap_ShowHandle): boolean;
var
i:integer;
SDG:TSaveDialog;
issave:boolean;
titlelist,templist:Tstrings;
begin
SDG:=TSaveDialog.Create(nil);
templist:=Tstringlist.Create;
titlelist:=Tstringlist.Create;
try
if lv.Items.Count = 0 then
begin
cap_ShowHand.cap_error('當前沒有資料!');
exit;
end;
if title = '' then //為空時匯出所有列
for i:=0 to lv.Columns.Count-1 do //收集EXCEL表列名
titlelist.Add(lv.Columns[i].Caption)
else //不為空時,只匯出指定列
titlelist.CommaText:=title;
SDG.Filter:='EXCEL(*.xls)|*.xls';
SDG.FileName:='我的EXCEL檔案.xls';
if SDG.Execute = true then
begin
isSave:=true;
if FileExists(SDG.FileName) then
issave:=cap_ShowHand.Cap_warn('檔案已存在,是否替換!');
end
else exit;
if issave then
begin
templist:=(getListViewValue(titlelist,lv));
templist.SaveToFile(SDG.FileName);
cap_ShowHand.Cap_succeed('匯出成功!');
end
else exit;
finally
templist.Free;
end;
end;
還沒貼完,等會回去精簡一下。試問,我是不是就只需要在保存或者打開的時候增加wps型別?還有該怎么增加?還有上面有個鏈接xls檔案的鏈接onnstr:='';
connstr:='Provider=Microsoft.Jet.OLEDB.4.0;';
connstr:=connstr+'Data Source='+fileName+';';
connstr:=connstr+'Extended Properties=Excel 8.0;';
connstr:=connstr+'Persist Security Info=False;';
這個玩意。如果我鏈接為wps 型別的我該怎么更改。。。。等!!!急急急。。。。。
uj5u.com熱心網友回復:
沒有人會嗎?
uj5u.com熱心網友回復:
wps本身是兼容excel的,所以沒有必要專門針對wps做。只用匯出為excel的格式的,用wps依然能打開。
uj5u.com熱心網友回復:
wps的表格記得可以保存為多個格式,你另存為兼容excel的就行了,沒有必要再去考慮其它的另外,我用ado連接,另外一臺新系統機器是不是要裝什么驅動才能用?
uj5u.com熱心網友回復:
只用匯出為excel的格式的,用wps依然能打開。uj5u.com熱心網友回復:
你說的是對的,但是現在業務員要求匯入匯出必須要有WPS。
業務部門說什么,我們就是狗一樣的。。
得照做。他們機器裝WPS,不一定裝excel.我試過把匯入匯出代碼格式換成.et是可以匯入WPS的,但是現在兩個都要支持,主要是下面代碼
SDG.Filter:='EXCEL(*.xls)|*.xls';
SDG.FileName:='我的EXCEL檔案.xls';
只有excel,怎么把WPS也添加進去????
uj5u.com熱心網友回復:
匯入匯出都要有。他們機器不一定裝了excel。。。。但是會裝WPS。所以還是得把兩種情況都寫進去,就是不知道怎么添加多個型別SDG.Filter:='EXCEL(*.xls)|*.xls';
SDG.FileName:='我的EXCEL檔案.xls';
這個怎么改?
uj5u.com熱心網友回復:
他們有的裝WPS,有的裝EXCEL。。我沒有辦法,坑爹的業務部門
uj5u.com熱心網友回復:
就是個過濾條件,可以試試借鑒TOpenDialog的filterFilter:string
作用:指定打開對話框,所有可用的過濾型別
格式:
a)描述|*.擴展名
b)指定多個過濾時,依次往后寫:描述|*.擴展名|描述|*.擴展名。。。
c)一個過濾器過濾多種格式時(用分號分割):描述|*.擴展名;*.擴展名
注意:|左右側不要有空格;
uj5u.com熱心網友回復:
我的客戶就喜歡使用WPS,WPS兼容Office。我直接呼叫WPS打開,EXCEL檔案。
一點問題都沒有。
uj5u.com熱心網友回復:
匯出和匯入WPS沒有做過,這個好像也有OLE模式uj5u.com熱心網友回復:
現在新版的WPS 表格匯入會提示格有空值,但匯入excel不會。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/72910.html
標籤:語言基礎/算法/系統設計
