我編寫了將所有管道轉換爲逗號的函數,然後將其轉換爲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文件的示例輸出(有錯誤行高亮顯示):
我已經意識到我的錯誤,這是由於在變量內部有commans導致名稱分裂。
是否有任何建議,我仍然可以將它們轉換爲.csv文件,儘管變量之間有comman?
我的猜測是「Chua Wei | Loon」這一行最初是「Chua Wei,Loon」當您將所有管道轉換爲逗號時,您並沒有考慮到列中的數據可能會有逗號(因此爲什麼它們是以管道分隔開始的?)您可能需要在管道的哪個位置添加雙引號,以便獲得「Chua Wei,Loon」,「Normal User」等。 –
您能向我們展示嗎實際創建的文本數據?它只是一個.xls文件,它是實際的文本,直到excel打開並重新保存它。直接用記事本或vs.net打開它,看看數據是什麼。似乎非常簡單的調試。 –
雙引號,其中管道是?這意味着我將不得不改變fileContent = fileContent.Replace('|',','); fileContent = fileContent.Replace(「|」,','); ? – gymcode