将一个 Excel 文件读入内存,然后将其写回磁盘
Read an Excel file into memory, and then write it back to disk
我最终试图读取一个文件,将其存储在 Cassandra 数据库中的一个 blob 中,然后再将其写回磁盘。有问题,并简化为以下演示问题的代码。相同的代码适用于 .txt 和 .csv 文件,但不适用于 Excel 电子表格。我不确定这是否是编码问题,以及如何解决它。我试过 Encoding.Unicode,但也没有用。
static void testFileReadWrite()
{
string filenameIn = @"c:\demo\Timesheet.xls";
string filenameOut1 = @"c:\demo\Timesheet_Test1.xls";
string filenameOut2 = @"c:\demo\Timesheet_Test2.xls";
string fileContents1 = File.ReadAllText(filenameIn);
File.WriteAllText(filenameOut1, fileContents1);
string fileContents2 = File.ReadAllText(filenameIn, Encoding.Unicode);
File.WriteAllText(filenameOut2, fileContents2, Encoding.Unicode);
}
原始文件大小为 536,576。 Test1 为 1,282,808,Test2 为 536,578。显然,我希望输出与读入时大小相同的文件,然后我将对其进行文件比较以验证它。我还希望该程序可以处理任何文件类型,只是 Excel 是第一个证明该问题的程序。
应该使用 File.ReadAllBytes
和 File.WriteAllBytes
来读取和写入二进制文件。希望对您有所帮助!
这个 Whosebug 有助于解释 ReadAllBytes 和 ReadAllText 之间的区别:Why is File.ReadAllBytes result different than when using File.ReadAllText?
我想要 Microsoft 的 'OfficeOpenXml' 库,并根据需要阅读 excel 文件。
//
using OfficeOpenXml;
//
read the file using file stream
using (var stream= new StreamReader("filePath"))
{
// then use the stream to extract the excel specific data
using (var excelPackage = new ExcelPackage(stream))
{
var sheet = excelPackage.Workbook.Worksheets[1];
var cell1= sheet.Cells[1, 1].GetValue<string>();
}
}
然后您可以构建您的字符串并存储到您喜欢的任何地方。
我最终试图读取一个文件,将其存储在 Cassandra 数据库中的一个 blob 中,然后再将其写回磁盘。有问题,并简化为以下演示问题的代码。相同的代码适用于 .txt 和 .csv 文件,但不适用于 Excel 电子表格。我不确定这是否是编码问题,以及如何解决它。我试过 Encoding.Unicode,但也没有用。
static void testFileReadWrite()
{
string filenameIn = @"c:\demo\Timesheet.xls";
string filenameOut1 = @"c:\demo\Timesheet_Test1.xls";
string filenameOut2 = @"c:\demo\Timesheet_Test2.xls";
string fileContents1 = File.ReadAllText(filenameIn);
File.WriteAllText(filenameOut1, fileContents1);
string fileContents2 = File.ReadAllText(filenameIn, Encoding.Unicode);
File.WriteAllText(filenameOut2, fileContents2, Encoding.Unicode);
}
原始文件大小为 536,576。 Test1 为 1,282,808,Test2 为 536,578。显然,我希望输出与读入时大小相同的文件,然后我将对其进行文件比较以验证它。我还希望该程序可以处理任何文件类型,只是 Excel 是第一个证明该问题的程序。
应该使用 File.ReadAllBytes
和 File.WriteAllBytes
来读取和写入二进制文件。希望对您有所帮助!
这个 Whosebug 有助于解释 ReadAllBytes 和 ReadAllText 之间的区别:Why is File.ReadAllBytes result different than when using File.ReadAllText?
我想要 Microsoft 的 'OfficeOpenXml' 库,并根据需要阅读 excel 文件。
//
using OfficeOpenXml;
//
read the file using file stream
using (var stream= new StreamReader("filePath"))
{
// then use the stream to extract the excel specific data
using (var excelPackage = new ExcelPackage(stream))
{
var sheet = excelPackage.Workbook.Worksheets[1];
var cell1= sheet.Cells[1, 1].GetValue<string>();
}
}
然后您可以构建您的字符串并存储到您喜欢的任何地方。