我需要使用C#将Excel工作表/工作簿中的数据写入文本文件。
另外,我希望所有Excel工作表数据都在单个文本文件中。
除了逐个从Excel工作表中读取数据然后将其附加到现有文本文件外,还有其他简单的方法吗?
答案 0 :(得分:3)
我建议使用OleDbDataReader
和www.connectionstrings.com中的连接字符串来读取Excel文件。您可以使用自己喜欢的方法(例如StreamWriter
)将数据吐出到文本文件中。
答案 1 :(得分:1)
SpreadsheetGear for .NET可以使用几行代码完成:
using System;
using SpreadsheetGear;
namespace WorkbookToCSV
{
class Program
{
static void Main(string[] args)
{
string inputFilename = @"c:\CSVIn.xlsx";
string outputFilename = @"c:\CSVOut.csv";
// Create the output stream.
using (System.IO.FileStream outputStream = new System.IO.FileStream(outputFilename, System.IO.FileMode.Create, System.IO.FileAccess.Write))
{
// Load the source workbook.
IWorkbook workbook = Factory.GetWorkbook(inputFilename);
foreach (IWorksheet worksheet in workbook.Worksheets)
{
// Save to CSV in a memory buffer and then write it to
// the output FileStream.
byte[] csvBuffer = worksheet.SaveToMemory(FileFormat.CSV);
outputStream.Write(csvBuffer, 0, csvBuffer.Length);
}
outputStream.Close();
}
}
}
}
您可以下载免费试用版here并亲自试用。
免责声明:我拥有SpreadsheetGear LLC
答案 2 :(得分:1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Globalization;
namespace Module2
{
public class Archives
{
public void readArchive()
{
//this will read from the archive
StreamReader SR;
string S;
int i = 0;
SR = File.OpenText(@"the path here for the excel archive");
S = SR.ReadToEnd();
SR.Close();
Console.WriteLine(S);
string[] words = S.Split(';');
Array.Sort(words);
for (i = 0; i < words.Length; i++)
Console.WriteLine(words[i]);
//this will create the archive
StreamWriter SW;
SW = File.CreateText(@"the path here for the .txt");
for (i = 0; i < words.Length; i++)
SW.WriteLine(words[i]);
SW.Close();
}
}
}
将读取,拆分文本,将它们放在一个数组上并写入.txt文件中的每个单词。 我想那就是它..
答案 3 :(得分:0)
有很多方法可以做到这一点。尝试在搜索框中搜索Excel。
在您的情况下,我认为最简单的选择是自动化Excel以打开Excel工作簿,然后使用SaveAs功能将其另存为CSV。