就我而言,我使用c#中的StreamWriter使用以下代码创建CSV文件:
[System.Web.Http.HttpPost]
public ActionResult createAllSubscribtionsExcelFile()
{
int ID = Convert.ToInt32(Request.Params["ID"]);
long totalRecords;
var Members = Services.MemberService.GetAll(0, int.MaxValue, out totalRecords);
string baseURL = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~"));
string packageName = Umbraco.Content(ID).Name;
string currentPath = Server.MapPath("/") + packageName;
string returnPath = baseURL + "/" + packageName;
string orderNumber = "none"; string price = "none"; string theBillNumber = "none";
List<RootObject> packages = null;
if (!System.IO.File.Exists(currentPath))
{
System.IO.File.Create(currentPath);
}
using (StreamWriter sr = new StreamWriter(currentPath + ".csv", false, Encoding.UTF8))
{
foreach (var member in Members)
{
var NestedPackages = member.GetValue<string>("packages");
if (NestedPackages != null)
{
packages = JsonConvert.DeserializeObject<List<RootObject>>(NestedPackages);
}
if (NestedPackages != null)
{
foreach (var package in packages)
{
var udi = package.package;
var content = Umbraco.Content(udi);
orderNumber = package.orderNumber;
price = package.theAmountPaid.ToString();
theBillNumber = package.theBillNumber;
sr.WriteLine("" + "," + orderNumber.Replace(',', ' ').Replace('/', ' ') + "," + price.Replace(',', ' ').Replace('/', ' ')
+ "," + theBillNumber.Replace(',', ' ').Replace('/', ' '));
}
}
}
sr.Close();
}
return Redirect(returnPath + ".csv");
}
在我的情况下,theBillNumber =“ 16744817032020146676”,但是excel工作表中显示的值类似于“ 16744817032020100000”(最后5位数字为零)。
我该如何解决此问题,请提供帮助。
一个小把戏!
使用c#我.CSV
用一行创建一个:
12/25/2021,James,'1836542348674987512345363,12
注意真正大数字开头的单引号。
如果我们不在文本字符前加前缀,Excel会将数字视为具有超过15个十进制数字的超大整数。Excel将自动将尾随数字转换为零。单引号告诉Excel将所有数字都保留下来。
一旦Excel.CSV
正常打开,所有数字都会出现,但是单元格以单引号开头。以下VBA将打开.CSV
并将任何前导单引号转换为PrefixCharacter。
然后使用Excel VBA:
Sub dural()
Workbooks.Open Filename:="C:\Users\garys\Desktop\x.csv"
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
v = cell.Value
If Left(v, 1) = "'" Then
cell.Clear
cell.NumberFormat = "@"
cell.Value = v
End If
Next cell
End Sub
我得到:
通过将公式栏中的值与单元格中的值进行比较可以看到,单引号不再是数字的一部分。它只是一个PrefixCharacter。
这种处理对于以下情况很有用:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句