2012-07-31 102 views
-1

从数据表中读取数据并移入记事本csv文件,在c#中,然后返回到电子表格。然而,在电子表格中,某些单元格是空的(通过空值我的意思是具有=“”的值,只是空格和空格的数量可以不同)。在转移到记事本并返回到电子表格中时,这些值可能会丢失。有没有办法区分这些细胞,所以我可以把引号附近,那么细胞仍然存在?空单元格包含引号

我已经想通了,大多数这个空细胞有data_string文件类型或布尔,此代码适用于所有data_string

if (fileType == "data_string") 
{ 
    string see = cell.getFormula().ToString(); 
    sw.Write("'" + see + "' "); 
} 
else 
{ 

    string see = cell.getFormula().ToString(); 
    sw.Write(see + " "); 
} 

但是我不希望所有的布尔数据是在引号只是那些是empty.so,到目前为止,我还

if (fileType == "bool") 
{ 

    if (cell.getFormula().Empty) 
    { 
     sw.Write("'" + cell.getFormula().ToString() + "' "); 
    } 
} 

但是这并不工作作为真正的细胞是不是空的,有另一种方式圆吗?

回答

1

然后忽略了一个事实,他们是布尔,只是检查字段是否为空,如:

if (cell.getFormula().StartsWith(" ")) 
        { 
         { 
          for (int i = 0; i < cell.getFormula().Length; i++) 
          { 
           if (cell.getFormula()[i] == ' ') 
           { 

            emptyBool.Add(" "); 

           } 
          } 
          string emptyBoolString = string.Join(" ", emptyBool.ToArray()); 
+0

我没有考虑这样做。我设法让它工作 – loles 2012-08-03 14:34:35

0

手动编码导入和导出分隔函数充满危险。相反,我会建议您使用专门开发的FileHelpers等第三方库,以协助处理这些情况。

像FileHelpers这样的库允许您用特定属性来修饰模型,然后使用该库来完成繁重的工作。下面是从他们的网站的例子: -

型号

[DelimitedRecord(",")] 
public class Customer 
{ 
    public int CustId; 

    public string Name; 

    public decimal Balance; 

    [FieldConverter(ConverterKind.Date, "dd-MM-yyyy")] 
    public DateTime AddedDate; 

} 

分析器类

var engine = new FileHelperEngine(typeof(Customer)); 

// To Read Use: 
Customer[] res = engine.ReadFile("FileIn.txt") as Customer[]; 

// To Write Use: 
engine.WriteFile("FileOut.txt", res); 

注:有不过是做类似的工作,我只用过其他库FileHelpers并没有失望。

0
if you are using **bool**, then its a **bit** so it can't be empty, 
it is either true or false or you can use null 
1

您可以检查单元格长度是否大于0(因此不是空的),如果不是(表示它是空的),则添加您的撇号。我是新来的C#,所以我不知道这是否会工作或没有

if (fileType == "bool") 
{ 
    if (!cell.getFormula().length > 0) // If the cell is not longer than 0 characters 
    { 
     string see = cell.getFormula().ToString(); 
     sw.Write("'" + see + "' "); 
    } 
    else 
    { 
     string see = cell.getFormula().ToString(); 
     sw.Write(see + " "); 
    } 
+0

不会工作空间仍然算作字符(哦,并删除帐户) – loles 2012-08-01 07:06:18

+0

我已修复它(仍在删除) – loles 2012-08-01 07:46:34

相关问题