全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:4368
推到 Plurk!
推到 Facebook!

請問將資料轉成XML在EXCEL開啟的問題

尚未結案
kartan_01
一般會員


發表:42
回覆:60
積分:20
註冊:2004-12-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-02-15 13:20:05 IP:61.221.xxx.xxx 未訂閱
我是將資料讀入Dataset中 利用Dataset.wirtexml 寫成XML檔案 可是在Excel中開啟時會出現這樣的問題 編號000100 會變成100 請問我該往哪方面找尋解決方式?
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-02-15 14:42:19 IP:203.204.xxx.xxx 未訂閱
您先看看您讀進Dataset 中的資料(000100)是否已變成"100",去掉"000"了 若是,是Dataset 的問題,這容易解決。 若是您讀入EXCEL 中變成100 ,這原因是Dataset.wirtexml 寫成XML檔案時 為整數型態,您必需在Dataset.wirtexml 寫成XML檔案時轉成字串型態就不會去掉"000"了。 若方便,請給我整個程式碼,我再替進一步您解決,因為無輕易得知。 DHM
------
ATEIN
kartan_01
一般會員


發表:42
回覆:60
積分:20
註冊:2004-12-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-02-15 15:43:22 IP:61.221.xxx.xxx 未訂閱
self.Odbciim_iprod.CommandText:=
'Select iim_iprod 料號, iim_idesc 品名, iim_group 製品群, iim_loc 倉庫位置, iim_imalg 管理區分, iim_iityp 資材碼, iim_moco 製造採購碼, iim_recode 要檢免檢, iim_stock 單位, iim_lead 交貨日期 From iim Where iim_iprod like ? ';
self.Odbciim_iprod.Parameters.Item[0].Value:=self.TextBox1.Text '%';
self.DataSet_Odbciim_iprod.Clear;
self.Odbciim_iprodDataAdapter.Fill(self.DataSet_Odbciim_iprod,'料號清單');    IF self.SaveFileDialog1.ShowDialog <> system.Windows.Forms.DialogResult.Cancel then
  begin
    self.DataSet_Odbciim_iprod.WriteXml(self.SaveFileDialog1.FileName);
  end;
寫出來的XML資料並沒有被去掉前面的0
OsX
版主


發表:6
回覆:151
積分:111
註冊:2003-05-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-02-16 16:01:36 IP:60.248.xxx.xxx 未訂閱
引言:
self.Odbciim_iprod.CommandText:=
'Select iim_iprod 料號, iim_idesc 品名, iim_group 製品群, iim_loc 倉庫位置, iim_imalg 管理區分, iim_iityp 資材碼, iim_moco 製造採購碼, iim_recode 要檢免檢, iim_stock 單位, iim_lead 交貨日期 From iim Where iim_iprod like ? ';
self.Odbciim_iprod.Parameters.Item[0].Value:=self.TextBox1.Text '%';
self.DataSet_Odbciim_iprod.Clear;
self.Odbciim_iprodDataAdapter.Fill(self.DataSet_Odbciim_iprod,'料號清單');    IF self.SaveFileDialog1.ShowDialog <> system.Windows.Forms.DialogResult.Cancel then
  begin
    self.DataSet_Odbciim_iprod.WriteXml(self.SaveFileDialog1.FileName);
  end;
寫出來的XML資料並沒有被去掉前面的0
這應該是 Excel 的問題, 儲存格的內容被當成數值格式顯示, 所以000100 會變成100, 你試試看在寫xml時遇到這種資料用 "' 這個符號把資料包夾起來, 看是否可解決你的問題
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-16 17:37:03 IP:203.204.xxx.xxx 未訂閱
請問,料號清單FIELD在OR.DB中是什麼資料型態定義呢? 若INTEGER 則是SQL.FIELD 的問題 可以透過SQL 語法做資料轉型再FILL TO AD. DHM
------
ATEIN
kartan_01
一般會員


發表:42
回覆:60
積分:20
註冊:2004-12-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-02-17 10:17:37 IP:61.221.xxx.xxx 未訂閱
我是利用2005的工具XML Mapper製造出.XSD檔案 Excel先開啟.XSD在匯入XML資料 這樣可以解決問題 可是這種方式步驟太多 可以在writexml時 同時將.XSD寫入嗎?
ATEIN
高階會員


發表:105
回覆:320
積分:125
註冊:2002-07-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-21 19:03:40 IP:203.204.xxx.xxx 未訂閱
引言: 我是利用2005的工具XML Mapper製造出.XSD檔案 Excel先開啟.XSD在匯入XML資料 這樣可以解決問題 可是這種方式步驟太多 可以在writexml時 同時將.XSD寫入嗎?
若以 Dataset 動態產生 ?.xml 這樣可樣可以? 若可以,我再寫個範例給您! DHM
------
ATEIN
wodahs
初階會員


發表:0
回覆:33
積分:26
註冊:2004-02-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-21 22:12:39 IP:61.62.xxx.xxx 未訂閱
引言: 我是利用2005的工具XML Mapper製造出.XSD檔案 Excel先開啟.XSD在匯入XML資料 這樣可以解決問題 可是這種方式步驟太多 可以在writexml時 同時將.XSD寫入嗎?
如果是DataSet DataSet ds = new DataSet(); // Fill Data ds.WriteXml("Filename.xml",XmlWriteMode.WriteSchema); wodahs ====================================================================== 我是非出身科班的菜鳥,瞎子摸象,寫錯的地方,請大家包涵包涵,不要太認真 ^^ 歡迎大家批評指教,適時糾正我錯誤觀念,這樣我才會進步並學到正確的知識 ^^ ====================================================================== 發表人 - wodahs 於 2005/02/21 22:22:41
kartan_01
一般會員


發表:42
回覆:60
積分:20
註冊:2004-12-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-02-22 10:22:46 IP:61.221.xxx.xxx 未訂閱
引言: 如果是DataSet DataSet ds = new DataSet(); // Fill Data ds.WriteXml("Filename.xml",XmlWriteMode.WriteSchema); wodahs
此方式雖然可以將Schema寫入XML中 但是跟我想要的不一樣 我希望的是EXCEL能夠直接開啟XML檔案,資料能正常顯示 而不需要先載入.XSD 再匯入.XML
wodahs
初階會員


發表:0
回覆:33
積分:26
註冊:2004-02-26

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-02-22 12:24:20 IP:61.231.xxx.xxx 未訂閱
引言:
引言: 如果是DataSet DataSet ds = new DataSet(); // Fill Data ds.WriteXml("Filename.xml",XmlWriteMode.WriteSchema); wodahs
此方式雖然可以將Schema寫入XML中 但是跟我想要的不一樣 我希望的是EXCEL能夠直接開啟XML檔案,資料能正常顯示 而不需要先載入.XSD 再匯入.XML
基本上,Excel的Xml的結構與DataSet所輸出的XML結構不一樣,所以描述欄位 資料的格式的方法不一樣,前者是使用〈Style〉定義格式,然後於Cell指定 套用的格式,與CSS概念有點像;而後者則是利用Schema定義資料的型態(不是 格式,也沒有格式,所以Excel才會自己判斷),所以,建議處理方法: 方法1.建立轉換的XLT,轉換輸出的DataSet Xml成為Ecxel Xml 方法2.直接擷取Excel Xml格式資料,逐筆判斷資料格式輸出套入 方法3.開啟Excel物件操作,不透過Xml Importer. (這個跟你要的不一樣) 上面幾種方法,印象中在網路上有些高手似乎有相關的文章,您可以找看看. 發表人 - wodahs 於 2005/02/22 12:29:52
kartan_01
一般會員


發表:42
回覆:60
積分:20
註冊:2004-12-08

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-03-04 10:57:18 IP:61.221.xxx.xxx 未訂閱
我試著利用ole輸出excel檔案,在一開始connect就發生錯誤
procedure TWinForm.Button2_Click(sender: System.Object; e: System.EventArgs);
var
filename:string;
i:integer;
myrowi:datarow;
begin
  filename:='c:\XML\TEST.xls';      self.OleDbConnection1.ConnectionString:=
  'Provider="Microsoft.Jet.OLEDB.4.0";Data Source="' filename '";Extended Properties=EXCEL 8.0;HDR=YES';
  self.OleDbConnection1.Open;      self.OleDbCommand1.CommandText:=
  'CREATE TABLE [IIM] (IPROD varchar(15),LOT varchar(5))';
  self.OleDbCommand1.ExecuteNonQuery;      self.OleDbCommand1.CommandText:=
  'INSERT INTO [IIM] (IPROD,LOT) VALUES(@IPROD,@LOT)';      for i:=0 to self.DataSet1.Tables['iim'].Rows.Count -1 do
  begin
    myrowi:=self.DataSet1.Tables['iim'].Rows[i];
    self.OleDbCommand1.Parameters.Item['@IPROD'].Value:=myrowi.Item['iim_iprod'].ToString;
    self.OleDbCommand1.Parameters.Item['@LOT'].Value:=myrowi.Item['iim_loc'].ToString;
  end;      self.OleDbConnection1.Close;    end;    procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
  self.DataSet1.Clear;
  self.SqlDataAdapter1.Fill(self.DataSet1,'iim');
  self.DataGrid1.SetDataBinding(self.DataSet1,'iim');
end;
code6421
版主


發表:43
回覆:223
積分:208
註冊:2002-08-16

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-03-05 06:00:34 IP:220.135.xxx.xxx 未訂閱
the tip is ' OleDbConnection conn = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" xlsFileName ";Extended Properties='Excel 8.0;HDR=Yes'"); Just coding... Taiwan:http://code6421.ktop.com.tw China:http://home.hoolee.com/~code6421
------
Just codeing...
系統時間:2024-04-25 7:12:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!