将文本文件中的数据添加到Excel工作表并保存

时间:2014-09-18 00:14:17

标签: c# multithreading excel

你好,             我试图从文本输入数据到excel并将其保存在特定的工作表名称下。如果只有一个工作表,但是当我再次调用相同的代码并且覆盖excel文件时,它不起作用。我想知道我是否可以从文本中复制数据并添加到工作表中。我使用了剪贴板方法,但它抛出了STA错误。我一遍又一遍地重复复制文本文件到工作表。这是我的代码:感谢帮助。

 a_Books.OpenText(reportloc + ".txt", Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, 1,
  Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited, Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierDoubleQuote,
  false, true, false, false, false, false, a_Opt, a_Opt, a_Opt, a_Opt, a_Opt);

  a_Book = a_Excel.Workbooks.Add(a_Opt);

                    a_Book.Sheets.Add();

                   Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)a_Book.ActiveSheet;
                   worksheet.Activate();
                    worksheet.Name = reportname;

                    FormatRaw_Data(worksheet);
                    a_Book.SaveAs(reportloc + ".xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, a_Opt, a_Opt, a_Opt, a_Opt, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, a_Opt, a_Opt, a_Opt, a_Opt, a_Opt);

2 个答案:

答案 0 :(得分:0)

我不确定你是如何插入新数据的,但是如果你正在写同一个工作表并写入相同的单元格,那么它总会覆盖它。

解决方案: 添加新工作表,或更改您写入的范围,以避免数据丢失。

编辑: 在您添加工作表的代码中,您选择活动工作表,这就是为什么它总是写入同一工作表,您必须选择这样的新工作表:

a_Book.Sheets.Add();
Microsoft.Office.Interop.Excel.Worksheet worksheet = a_Book.Sheets[a_Book.Sheets.Count - 1];
worksheet .Name = "You can put a name";

答案 1 :(得分:0)

使用下面的代码: 阅读excel。确保它存在:

a_Book = a_Excel.Workbooks.Open(reportloc + ".xls", 0, false, 5, "", "", false, XlPlatform.xlWindows, "\t", true, false, 0, true, false, false);

使用TexttoColumns属性:

for (int i = 0; i < range.Rows.Count; i++)
{
    range.Rows[i].Value = lines[i];
    range.Rows[i].TextToColumns(
        range.Rows[i],
        Microsoft.Office.Interop.Excel.XlTextParsingType.xlDelimited,
        Microsoft.Office.Interop.Excel.XlTextQualifier.xlTextQualifierNone,
        false,
        true
    );          
}