将管道分隔的文本文件转换为.CSV excel文件时,行会搞乱

时间:2011-11-09 06:44:30

标签: c# asp.net visual-studio excel visual-studio-2005

我编写了这个函数,它将所有管道转换为逗号,然后将其转换为excel .CSV文件。

但是,之后我意识到某些行存在一些问题。

E.g。姓名[Chua Wei Loon](据说是在一栏中),最后“Chua Wei”在一栏中,“Loon”在下一栏。

我查看了文本文件,发现名称之间没有管道,我找不到解决方案。

以下是我的功能代码:

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文件,尽管变量之间有commans?

2 个答案:

答案 0 :(得分:1)

你确定[Chua Wei Loon]是不是真的[Chua Wei,Loon]吗?您是否先删除了数据中的逗号?

答案 1 :(得分:0)

输入文件是管道分隔的,因为数据包含逗号。因此,将分隔符更改为逗号将导致您遇到的问题。解决方案:保留管道分隔符。为什么你觉得你需要更换它们?我确信Excel可以读取管道分隔的文件。