2011-11-09 58 views
0

我編寫了將所有管道轉換爲逗號的函數,然後將其轉換爲excel .CSV文件。將管道分隔文本文件轉換爲.CSV excel文件時出現亂碼

但是,在那之後,我意識到有些行有一些問題。

E.g.姓名[蔡偉龍](應該是在一列中),結果是「蔡偉」在一列中,「龍」在下一列。

我查看了文本文件,發現名稱之間沒有管道,我無法找到解決方案。

下面是我的功能代碼:

protected void SaveAsExcelBtn_Click(object sender, EventArgs e) 
    { 


     //string strExcelOutputFilename = "C:/Documents and Settings/rhlim/My Documents/" + DateTime.Now.ToString("yyyyMMddHHmmss") + xlExtension; 

     // Before attempting to import the file, verify 
     // that the FileUpload control contains a file. 
     if (TextFile.HasFile) 
     { 
      // Get the name of the Excel spreadsheet. 
      string strFileName = Server.HtmlEncode(TextFile.FileName); 

      // Get the extension of the text. 
      string strExtension = Path.GetExtension(strFileName); 

      // Validate the file extension. 
      if (strExtension != ".TXT" && strExtension!=".txt") 
      { 

       Response.Write("<script>alert('Invalid text file!');</script>"); 
       return; 
      } 

      // Generate the file name to save the text file. 
      //string strUploadFileName = "C:/Documents and Settings/rhlim/My Documents/Visual Studio 2005/WebSites/SoD/UploadFiles/" + DateTime.Now.ToString("yyyyMMddHHmmss") + strExtension; 

      if (DEMUserRoleRB.Checked) 
      { 
       string strExcelOutputFilename = "C:/" + "userrolelist" + xlExtension; 


       using (StreamWriter outputWriter = new StreamWriter(File.Create(strExcelOutputFilename))) 
       { 
        StreamReader inputReader = new StreamReader(TextFile.FileContent); 
        string fileContent = inputReader.ReadToEnd(); 
        fileContent = fileContent.Replace('|', ','); 
        outputWriter.Write(fileContent); 
        //TextFile.SaveAs(strExcelOutputFilename); 
        inputReader.Close(); 
        UploadStatusLabel.Text = "Conversion successful. File is stored at directory C:/"; 
       } 

       //string strExcelOutputFilename = "C:/Documents and Settings/rhlim/My Documents/" + DateTime.Now.ToString("yyyyMMddHHmmss")+xlExtension; 
       // Save the Excel spreadsheet on server. 
       //TextFile.SaveAs (strExcelOutputFilename); 

      } 
     } 
     else Response.Write("<script>alert('Please select a file');</script>"); 

.csv文件的示例輸出(有錯誤行高亮顯示):

enter image description here

我已經意識到我的錯誤,這是由於在變量內部有commans導致名稱分裂。

是否有任何建議,我仍然可以將它們轉換爲.csv文件,儘管變量之間有comman?

+0

我的猜測是「Chua Wei | Loon」這一行最初是「Chua Wei,Loon」當您將所有管道轉換爲逗號時,您並沒有考慮到列中的數據可能會有逗號(因此爲什麼它們是以管道分隔開始的?)您可能需要在管道的哪個位置添加雙引號,以便獲得「Chua Wei,Loon」,「Normal User」等。 –

+0

您能向我們展示嗎實際創建的文本數據?它只是一個.xls文件,它是實際的文本,直到excel打開並重新保存它。直接用記事本或vs.net打開它,看看數據是什麼。似乎非常簡單的調試。 –

+0

雙引號,其中管道是?這意味着我將不得不改變fileContent = fileContent.Replace('|',','); fileContent = fileContent.Replace(「|」,','); ? – gymcode

回答

1

你是否檢查[蔡偉龍]是不是真的[蔡偉龍]?你是否首先擺脫了數據中的逗號?

+0

哦,是的,我已經檢查過,他們之間確實有軍官。 Shucks,如果多數民衆贊成的情況下,我不能轉換爲.csv了:( – gymcode

+0

以及...首先拋出逗號是一個選項,當然, fileContent = fileContent.Replace(',',''); – Tom

0

輸入文件是由管道分隔的,因爲數據包含逗號。將分隔符更改爲逗號會導致您看到的問題。解決方案:保留管道分隔符。你爲什麼覺得你需要更換它們?我相信Excel可以讀取管道分隔的文件。

+0

我不知道如何編寫管道分隔文件.xls文件。如果有樣品代碼,那真的很有幫助。 – gymcode

+0

如何在Excel中加載逗號分隔文件? – phoog

+0

我意識到我的錯誤,這是由於名稱變量之間有comman。有什麼辦法可以改變','而不是使用逗號來轉換嗎? – gymcode

相關問題