我使用了 openfiledialog 并对其进行过滤以获取:.xls 和 .xlsx 和 .xlsm 文件。但我不知道接下来要做什么,我用 firstName 和 lastName 构建了一个工人类,我想从 excel 文件中获取数据并将其放入变量中。
这是我的 openfiledialog 代码:
private void ExcelLoad_Click(object sender, EventArgs e)
{
int size = -1;
openFileDialog1.Title = "Browse Excel file";
openFileDialog1.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm";
DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.
if (result == DialogResult.OK) // Test result.
{
string file = openFileDialog1.FileName;
try
{
string text = File.ReadAllText(file);
size = text.Length;
}
catch (IOException)
{
}
}
Console.WriteLine(size); // <-- Shows file size in debugging …Run Code Online (Sandbox Code Playgroud) 我正在尝试阅读excel表并向控制台显示内容.代码在这里
FileStream fileStream = new FileStream(@"E:\USERS\MyWorkbook.xlsx", FileMode.Open, FileAccess.Read);
byte[] byteCode = new byte[fileStream.Length];
fileStream.Read(byteCode, 0, (int)fileStream.Length);
foreach (var byteValue in byteCode)
{
Console.Write(Convert.ToChar(byteValue));
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
输出是
PK♥♦♠!b??h ^☺?♦!☻[Content_Types] .xml¢♦☻(☻
¬?ENA0►E÷HüCä-Jܲ5í?Ç↕*Q> AA?ƪc[?iiÿ??û►B¡§j7±↕IÜ{2ñIh²nm??Æ»R♀?? EAU ^←7 /> AC "%¿↨↓?rZYï←@ 1↓__?f??q·AR4DáAJ¬→h§▬>?a?UÇV◄߯1♀ªZ"9EUAàNV_◄8EcO►aÑ!Oji){^óa-I♦?"{Ü▬v^¥P!XS)bR1rú?K_s(, 3O▬▬_§ïßeÖ↔♦»ß1æ►@(?a?sí?►[í?☼öB·LA?F←I↔"fKlk↑ - ¿$♣?A pN $å
它出什么问题了?
我正在尝试将excel文件及其内容上传到我的WebApi和DO STUFF。我已经完成了通过上传按钮发送文件的extJs部分。(下面的代码)
我的问题是我不知道如何构建webApi部分来处理excel文件。我猜我必须有一个HttpPost。
假WebApi:
public string SampleUploadFile()
{
return _repo.UploadFile();
}
Run Code Online (Sandbox Code Playgroud)
Extjs代码:
xtype: 'form',
//renderTo: 'fi-form', //(5)
fileUpload: true, //(1)
width: 500,
frame: true,
title: 'Position Sheet Upload Form',
bodyPadding: '10 10 0',
//bodyStyle: 'padding: 10px 10px 0 10px;',
defaults: {
anchor: '100%',
allowBlank: false,
msgTarget: 'side',
labelWidth: 50
},
//labelWidth: 50,
items: [{
xtype: 'fileuploadfield',
emptyText: 'Select an image',
fieldLabel: 'Image',
name: 'file', //(2)
buttonText: 'Choose a file'
}],
buttons: [{
text: 'Save',
handler: function () {
if (this.up('form').getForm().isValid()) …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个允许使用C#读取Excel文档的库,但我需要能够读取单元格格式以及电子表格中的数据。我发现这个有用的问题列出了许多用于读取Excel文档的替代方法,但是此处提供的许多解决方案仅允许读取电子表格的内容,而不允许读取单元格属性(例如,字体,背景色等)。但是,对于我的特定问题,我需要阅读一个包含很多单元格格式的文档,并且我需要能够读取此格式信息。
我需要阅读的Excel文档是xls文档,因此在此阶段不需要阅读xlsx。我正在寻找无需安装Excel就可以在服务器上使用的库,因此它必须是独立的解决方案,最好是开源的。
有没有人有从xls文档中读取单元格格式信息的经验,并且可以建议一个有助于完成此任务的库?
更新:
我正在使用ClosedXml,因为从我读到的内容来看,它似乎提供了我需要的功能。我正在使用以下示例代码:
http://closedxml.codeplex.com/wikipage?title=查找%20和%20extracting%20the%20data&referringTitle =文档
并能够毫无问题地读取Excel文档的内容。我仅使用此代码中的Categories示例,但已将两个categoryname单元格格式化为具有背景色。现在,我要使用ClosedXml进行的操作是确定:
如果在特定单元格上定义了填充背景色
如果已定义,则获取Fill的颜色(十六进制值即可)
这是我尝试使用的一些代码:
// Get all categories
while (!categoryRow.Cell(coCategoryId).IsEmpty())
{
IXLCell categoryName = categoryRow.Cell(coCategoryName);
try
{
categories.Add(categoryName.GetString() + " " + categoryName.Style.Fill.BackgroundColor.Color.ToHex());
}
catch
{
categories.Add(categoryName.GetString() + " None");
}
categoryRow = categoryRow.RowBelow();
}
Run Code Online (Sandbox Code Playgroud)
但是代码
categoryName.Style.Fill.BackgroundColor.Color.ToHex()
Run Code Online (Sandbox Code Playgroud)
总是抛出期望“词典中不存在给定的键”。,即使对于确实定义了背景色的单元格也是如此。任何人都有任何想法如何与ClosedXml一起使用吗?
我的C#应用程序从excel文件中获取了大量数据并对其进行处理,然后将其写回文件.
问题是从Excel文件加载数据时,需要一些时间(大约7000字段的Excel需要30秒)
我想让它更快,是否有任何方法可以在相当长的时间内使其更快?
我用来获取数据的代码是:
streamReader = new StreamReader(@"ExcelPath.txt");
string path = streamReader.ReadLine();
//An Excel Application ==(contains)==> [Many] Excel WorkBook ==(contains)==>[Many] Excel WorkSheets==(contains)==>[Many] Ranges
Microsoft.Office.Interop.Excel.Application excelapp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook myworkbook = excelapp.Workbooks.Open(path, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true);
Microsoft.Office.Interop.Excel.Sheets myworksheets = myworkbook.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet myworksheet =myworksheets.get_Item(1);
Microsoft.Office.Interop.Excel.Range range = myworksheet.UsedRange;
string[] data = new string[range.Rows.Count];
int start = 0;
for (start = 3; start < range.Rows.Count; start++)
{
Microsoft.Office.Interop.Excel.Range myrange = myworksheet.get_Range("O" + start.ToString(), System.Reflection.Missing.Value); …Run Code Online (Sandbox Code Playgroud) excel ×5
c# ×4
.net ×2
closedxml ×1
extjs ×1
file ×1
ms-office ×1
optimization ×1
performance ×1