我有一个逗号分隔的文本文件。有些数字代表代码或信用卡号码,它们应在Excel中显示为TEXT,不应视为数字(左边是重要的)
这是我的代码:
m_objBooks.OpenText(
Filename: _fileInfo.FullName,
Origin: Microsoft.Office.Interop.Excel.XlPlatform.xlWindows,
StartRow: 1,
DataType: Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited,
TextQualifier: Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierDoubleQuote,
ConsecutiveDelimiter: false,
Tab: false,
Semicolon: false,
Comma: true,
Space: false,
Other: false,
OtherChar: m_objOpt,
FieldInfo: m_objOpt,
TextVisualLayout: m_objOpt,
DecimalSeparator: m_objOpt,
ThousandsSeparator: m_objOpt,
TrailingMinusNumbers: m_objOpt,
Local: m_objOpt
);
m_objBook = m_objExcel.ActiveWorkbook;
// Save the text file in the typical workbook format and quit Excel.
m_objBook.SaveAs(excelFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook,
m_objOpt, m_objOpt, m_objOpt, m_objOpt,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt,
m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();
虽然代码和信用卡字段周围有双引号,但生成的excel文件仍会将它们视为数字,方法是删除Left Zero和类似的东西。为什么呢?
答案 0 :(得分:2)
我已经在一个月内解决了这个问题。我发现使用这种方法存在很多问题。
最后,我在CodeProject网站上找到了一个很好的例子。
请看下面的例子。
A Very Easy to Use Excel XML Import-Export Library
我希望它有用。
答案 1 :(得分:0)
我设法通过传递正确的FieldInfo对象来解决这个问题。
在我的例子中,我将一个Missing对象传递给了FieldInfo参数。
而不是那样,我创建了一个数组对象并将其传递给FieldInfo参数。
以下是有关如何创建FieldInfo对象的示例:
int[,] _fieldInfo = new int[8,2] // 8 = number of columns , 2 = number of properties (column number and column type (General = 1 , Text = 2 .. check: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.opentext.aspx )
//fill the array:
_fieldInfo[0,0] = 1; //column number
_fieldInfo[0,1] = 2; //column type (2 = text)
_fieldInfo[1,0] = 2;
_fieldInfo[1,1] = 2;
_fieldInfo[2,0] = 3;
_fieldInfo[2,1] = 2;
之后,我只是将_fieldInfo传递给方法,一切都完成了。当然,您可以使用此技术使用循环动态创建_fieldInfo。