私は区切り記号(|)で区切られた1列のすべての値を持つExcelシートを持っています。 Coumn1 | COLUMN2 | COLUMN3 | column4(この列名はExcelsheetの1行目にある) をvalue1 | value2の| value33 | value4シートの値を分割して新しいExcelシートに保存するにはどうすればいいですか?
val1と|| val3は| val4
私は値を分離分割し、作成したいです新しいExcelシートは分割された値を格納します。
新しいExcelシートでは値を取得したいと思います。
列1列2 COLUMN3 Column4
をvalue1の値2値3のvalue4私はthis.anyoneのような値が私は、このためのソリューションを与え得ることができますどのように
ヴァルval3はval4
。
私はExcelからデータを取得し、値をデータテーブルに格納します。 これは私が次のコードを使用していたためです。
public void LoadExcelData()
{
using (SPSite site = this.WebApplication.Sites[0])
{
using (SPWeb currWeb = site.OpenWeb())
{
string fullpath = "";
SPQuery query = new SPQuery();
SPList currList = currWeb.Lists.TryGetList("JDFieldMapping");
SPListItemCollection itemColl = currList.GetItems(query);
query.ViewFields = string.Concat(
"<FieldRef Name='FilePath' />");
SPListItemCollection oItemCol = currList.GetItems(query);
string directorypath = "";
foreach (SPListItem oItem in oItemCol)
{
directorypath = Convert.ToString(oItem["FilePath"]);
break;
}
var directory = new DirectoryInfo(directorypath);
var FilePath = (from f in directory.GetFiles()
orderby f.LastWriteTime descending
select f).First();
string Filename = FilePath.ToString();
fullpath = directorypath + Filename;
DataTable data = GetFileExtension(fullpath);
}
}
}
public DataTable GetFileExtension(string fullpath)
{
var FileFullpath = fullpath;
string fileExtension = Path.GetExtension(fullpath).ToUpper();
string connectionString = "";
if (fileExtension == ".XLS")
{
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + fullpath + "'; Extended Properties='Excel 8.0;HDR=YES;'";
}
else if (fileExtension == ".XLSX")
{
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + fullpath + "';Extended Properties='Excel 12.0 Xml;HDR=YES;'";
}
if (!(string.IsNullOrEmpty(connectionString)))
{
string[] sheetNames = GetExcelSheetNames(connectionString);
if ((sheetNames != null) && (sheetNames.Length > 0))
{
OleDbConnection con = new OleDbConnection(connectionString);
// string status = "SELECT * FROM [" + sheetNames[0] + "]" + "WHERE [CAN Status] = 90;";
string status = "SELECT * FROM [" + sheetNames[0] + "]";
OleDbDataAdapter da = new OleDbDataAdapter(status, con);
dt = new DataTable();
da.Fill(dt);
con.Close();
}
}
return dt;
}
private string[] GetExcelSheetNames(string strConnection)
{
var connectionString = strConnection;
String[] excelSheets;
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
return null;
}
excelSheets = new String[dt.Rows.Count];
int i = 0;
// Add the sheet name to the string array.
foreach (DataRow row in dt.Rows)
{
excelSheets[i] = row["TABLE_NAME"].ToString();
i++;
}
}
return excelSheets;
}
に応じてExcelワークブックのパスを変更する必要があるだけでなく、カラム名?ここで本当の質問はありません – BugFinder
シートを開き、データを読んで新しいシートに保存します。 – C4u
私はうまく動作しているコードを追加しましたが、Excelシートではすべての値が区切られています。だから私はそれらの値を分割し、どちらか私はこれを行うことができますどのようにデータテーブルまたは新しいExcelシートに格納したいですか? – elina