2017-07-10 46 views
0

我能夠與HttpResponseMessage並設置所有頭PARAMS下載和如所示這裏在下面的代碼片段:C#HttpResponseMessage/Angularjs - 下載爲Excel犯規保存數據總是

downloadHttpResp.Content = new ByteArrayContent(dwlMemStream.ToArray()); 
//******************************************************************************* 
downloadHttpResp.Content.Headers.Add("x-filename", fileName); 
downloadHttpResp.Content.Headers.ContentType = new MediaTypeHeaderValue(mimeType);  
downloadHttpResp.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
downloadHttpResp.Content.Headers.ContentDisposition.FileName = fileName; 

問題是一個的列 - 這是只是一個文本列(但下載並打開對待它像一個日期列)。對於例如我有多個行列值發生爲11 - 05,當下載在Excel中保存或打開時,它將轉換爲Nov 05(就像它的日期一樣)。我如何解決這個問題?有沒有其他的方法可以解決,或者如果我可以設置的某個標題選項/設置將保持原樣,並且在接收端沒有進行轉換? 任何幫助,不勝感激。

感謝

+1

正在下載的文件的類型是什麼。這看起來像Excel讀取文件時出現問題。例如,如果它是一個CSV文件,Excel不知道這些值是什麼,並會猜測。這讓你無法控制。如果被下載的文件是一個實際的excel文件,那麼你需要確保它的值類型在最初保存/生成時被正確配置。 – Nkosi

回答

1

你可以嘗試添加=的出現和你在像雙引號發生之前=「11-05」

+0

我現在通過在該特定列中的所有值周圍放置雙引號。但這不是一個長期的解決方案 – user428602

+0

這是爲解決這個問題而工作的,另一種方法是將列的格式更改爲文本並將文件保存爲.xls –

+0

我正在創建一個stringbuilder - (使用table,tr,td )to - stream - httpResponseMessage,所以在這個意義上所有東西都已經是一個字符串了。 – user428602

0

這看起來與Excel讀取該文件有問題。例如,如果它是一個CSV或平面文件,excel不知道這些值是什麼,並會猜測。

這使除非修改您的輸出,以避免與Excel應用程序

然而,如果要下載的文件是一個實際的excel文件,那麼你需要確保該值的類型是正確的衝突這外面你的控制配置最初保存/生成的時間。

+0

它不是Excel文件的問題。我有一個datareader,它是我的webApi中的一個存儲過程調用的結果,我正在向一個html表寫入數據,即table-tr-td,它以字節數組形式寫入流並以Excel形式下載。所以不明白你在說什麼...... – user428602

+0

@ user428602它仍然是一個只有文本的平面文件。文本文件沒有格式,所以解釋內容的應用程序不會知道如何格式化它。 – Nkosi