Php DB Csv导出和Excel数字格式化
我正在以csv格式从DB导出一个表。我有以0开头的数字,比如04596或059438。 如果我在LibreOffice或Excel中打开此csv,0将被丢弃,数字显示为4596和59438。 我将数字导出为文本,如果我在记事本++中打开csv文件,0都在那里,它们都在Php DB Csv导出和Excel数字格式化,php,excel,phpmyadmin,export-to-csv,libreoffice,Php,Excel,Phpmyadmin,Export To Csv,Libreoffice,我正在以csv格式从DB导出一个表。我有以0开头的数字,比如04596或059438。 如果我在LibreOffice或Excel中打开此csv,0将被丢弃,数字显示为4596和59438。 我将数字导出为文本,如果我在记事本++中打开csv文件,0都在那里,它们都在 是否有一种解决方法使数字在文件中可见?将其转换为字符串,例如: echo“'.”$number.“在Calc中手动打开CSV文件时,将看到文本导入过滤器设置窗口。请慢慢单击“确定”,不要跳过此步骤 选择不应识别为数字,但应保留前导
是否有一种解决方法使数字在文件中可见?将其转换为字符串,例如:
echo“'.”$number.“代码>在Calc中手动打开CSV文件时,将看到文本导入过滤器设置窗口。请慢慢单击“确定”,不要跳过此步骤
选择不应识别为数字,但应保留前导零的文本的列,并将其类型指定为文本。还要为其余列设置正确的类型。可以为不需要的列指定隐藏。检查其余参数的状态—代码页、语言、文本字段的引号类型等
现在点击OK。确保导入按预期进行
现在运行这个简单的宏
Sub getMeCode
Dim oDoc As Variant
Dim aArgs As Variant
Dim sResult As String
Dim sTemp As String
oDoc = ThisComponent
aArgs = oDoc.getArgs()
sTemp = getValArg(aArgs, "URL")
sResult = "Dim sUrl As String, oDoc As Variant" + Chr(10) + "sUrl = convertToURL(""" + convertFromURL(sTemp) +""")" + Chr(10)
sResult = sResult + "Dim OpenProp(1) as New com.sun.star.beans.PropertyValue" + Chr(10)
sResult = sResult + "OpenProp(0).name=""FilterName""" + Chr(10)
sResult = sResult + "OpenProp(1).name=""FilterOptions""" + Chr(10)
sTemp = getValArg(aArgs, "FilterName")
sResult = sResult + "OpenProp(0).value=""" + sTemp + """" + Chr(10)
sTemp = getValArg(aArgs, "FilterOptions")
sResult = sResult + "OpenProp(1).value=""" + sTemp + """" + Chr(10)
sResult = sResult + "If Not FileExists(sUrl) Then Exit Sub" + Chr(10)
sResult = sResult + "oDoc = stardesktop.LoadComponentFromURL(sUrl, ""_blank"",0, OpenProp())"
MsgBox(sResult,0,"Select, Press Ctrl+C and Paste to macro")
End Sub
此宏使用getValArg辅助函数,以下是其文本
Function getValArg(aArg As Variant, sNameArg As String) As Variant
Dim i As Long
Dim tmp As Variant
getValArg = ""
For i = LBound(aArg) To UBound(aArg)
tmp = aArg(i)
If UCase(tmp.Name) = UCase(sNameArg) Then
getValArg = tmp.Value
Exit Function
EndIf
Next i
End Function
因此,您将收到这样的消息
注意划线。如果您对文件使用这样的参数(无论您使用何种编程语言在Calc中打开文件),那么在大多数情况下,结果都是正确的。这些数字在CSV文件中是否有引号?否。只是一个纯文本。我做了一个像$temp['number']=“'”这样的把戏$arr['number']。“”
,它在Excel中将数字显示为“04569”,但对该文件的进一步操作将不容易。是否尝试使用双引号<代码>$temp=''''.$arr['number'.'”不幸的是,这也没有奏效。它们在Excel或LibreOffice中显示为“04569”或“04569”以及引号。请勿打开该文件。您必须将文件导入Excel,并在导入时将该列指定为文本。您可以使用Power Query(和Transform)或legacy向导进行此操作。因此,您的注释的第一部分起到了作用!现在我可以看到该列中的所有零,但每次打开文件时都必须更改列类型。第二部分是我能完全理解的宏。它必须在LibreOffice中运行?例如,我必须向客户解释,他必须在打开csv文件之前运行此宏?您可以教客户在手动打开文件时使用设置窗口。如果客户机不愿意学习,您可以使用我的宏输出的代码为这个顽固的客户机创建自定义扩展。扩展名将是一个宏,但客户不需要知道它-他只需要在工具栏上有一个按钮,例如“打开您的价格”,它将始终以所需的形式打开您的文件。我不知道你的任务,我不知道你会对你的客户进行多少培训,我不知道你会在理解iTunes上花费多少精力。这将是计划B,你是对的,客户端在这方面真的很固执。它来自db,已经是一个字符串,我不需要转换它